From be8f5b5671145ba13a26f18a963be717ed763bfb Mon Sep 17 00:00:00 2001 From: seulle Date: Thu, 21 Mar 2024 10:46:32 +0900 Subject: [PATCH 001/101] template add --- vue-light-bootstrap-dashboard-master/.babelrc | 10 + .../.babelrc:Zone.Identifier | 0 .../.editorconfig | 9 + .../.editorconfig:Zone.Identifier | 0 .../.eslintrc | 6 + .../.eslintrc:Zone.Identifier | 0 .../.github/workflows/main.yml | 12 + .../workflows/main.yml:Zone.Identifier | 0 .../.gitignore | 16 + .../.gitignore:Zone.Identifier | 0 vue-light-bootstrap-dashboard-master/.npmrc | 1 + .../.npmrc:Zone.Identifier | 0 .../.postcssrc.js | 8 + .../.postcssrc.js:Zone.Identifier | 0 .../CHANGELOG.md | 19 + .../CHANGELOG.md:Zone.Identifier | 0 .../CODE_OF_CONDUCT.md | 46 + .../CODE_OF_CONDUCT.md:Zone.Identifier | 0 .../CONTRIBUTING.md | 10 + .../CONTRIBUTING.md:Zone.Identifier | 0 .../ISSUE_TEMPLATE.md | 13 + .../ISSUE_TEMPLATE.md:Zone.Identifier | 0 vue-light-bootstrap-dashboard-master/LICENSE | 21 + .../LICENSE:Zone.Identifier | 0 .../README.md | 57 + .../README.md:Zone.Identifier | 0 .../documentation/css/demo.css | 73 + .../css/demo.css:Zone.Identifier | 0 .../documentation/css/documentation.css | 203 + .../css/documentation.css:Zone.Identifier | 0 .../documentation/css/light-dashboard.css | 11558 ++++++++++++++++ .../css/light-dashboard.css:Zone.Identifier | 0 .../documentation/img/apple-icon.png | Bin 0 -> 2446 bytes .../img/apple-icon.png:Zone.Identifier | 0 .../documentation/img/back.jpg | Bin 0 -> 610834 bytes .../img/back.jpg:Zone.Identifier | 0 .../documentation/img/favicon.png | Bin 0 -> 2761 bytes .../img/favicon.png:Zone.Identifier | 0 .../documentation/img/tim-logo.png | Bin 0 -> 4821 bytes .../img/tim-logo.png:Zone.Identifier | 0 .../documentation/tutorial-components.html | 97 + .../tutorial-components.html:Zone.Identifier | 0 .../intelij.webpack.js | 12 + .../intelij.webpack.js:Zone.Identifier | 0 .../package.json | 40 + .../package.json:Zone.Identifier | 0 .../public/.gitkeep | 0 .../public/.gitkeep:Zone.Identifier | 0 .../public/Dashboard.PNG | Bin 0 -> 224552 bytes .../public/Dashboard.PNG:Zone.Identifier | 0 .../public/favicon.png | Bin 0 -> 2761 bytes .../public/favicon.png:Zone.Identifier | 0 .../public/img/default-avatar.png | Bin 0 -> 2864 bytes .../img/default-avatar.png:Zone.Identifier | 0 .../public/img/faces/face-0.jpg | Bin 0 -> 2864 bytes .../img/faces/face-0.jpg:Zone.Identifier | 0 .../public/img/faces/face-1.jpg | Bin 0 -> 20568 bytes .../img/faces/face-1.jpg:Zone.Identifier | 0 .../public/img/faces/face-2.jpg | Bin 0 -> 20663 bytes .../img/faces/face-2.jpg:Zone.Identifier | 0 .../public/img/faces/face-3.jpg | Bin 0 -> 20603 bytes .../img/faces/face-3.jpg:Zone.Identifier | 0 .../public/img/faces/face-4.jpg | Bin 0 -> 19868 bytes .../img/faces/face-4.jpg:Zone.Identifier | 0 .../public/img/faces/face-5.jpg | Bin 0 -> 4716 bytes .../img/faces/face-5.jpg:Zone.Identifier | 0 .../public/img/faces/face-6.jpg | Bin 0 -> 4581 bytes .../img/faces/face-6.jpg:Zone.Identifier | 0 .../public/img/faces/face-7.jpg | Bin 0 -> 21603 bytes .../img/faces/face-7.jpg:Zone.Identifier | 0 .../public/img/faces/tim_vector.jpe | Bin 0 -> 29406 bytes .../img/faces/tim_vector.jpe:Zone.Identifier | 0 .../public/img/favicon.ico | Bin 0 -> 1150 bytes .../public/img/favicon.ico:Zone.Identifier | 0 .../public/img/favicon.png | Bin 0 -> 2761 bytes .../public/img/favicon.png:Zone.Identifier | 0 .../img/icons/android-chrome-192x192.png | Bin 0 -> 9416 bytes ...android-chrome-192x192.png:Zone.Identifier | 0 .../img/icons/android-chrome-512x512.png | Bin 0 -> 29808 bytes ...android-chrome-512x512.png:Zone.Identifier | 0 .../img/icons/apple-touch-icon-120x120.png | Bin 0 -> 3369 bytes ...ple-touch-icon-120x120.png:Zone.Identifier | 0 .../img/icons/apple-touch-icon-152x152.png | Bin 0 -> 4046 bytes ...ple-touch-icon-152x152.png:Zone.Identifier | 0 .../img/icons/apple-touch-icon-180x180.png | Bin 0 -> 4678 bytes ...ple-touch-icon-180x180.png:Zone.Identifier | 0 .../img/icons/apple-touch-icon-60x60.png | Bin 0 -> 1491 bytes ...apple-touch-icon-60x60.png:Zone.Identifier | 0 .../img/icons/apple-touch-icon-76x76.png | Bin 0 -> 1823 bytes ...apple-touch-icon-76x76.png:Zone.Identifier | 0 .../public/img/icons/apple-touch-icon.png | Bin 0 -> 4678 bytes .../apple-touch-icon.png:Zone.Identifier | 0 .../public/img/icons/favicon-16x16.png | Bin 0 -> 799 bytes .../icons/favicon-16x16.png:Zone.Identifier | 0 .../public/img/icons/favicon-32x32.png | Bin 0 -> 1271 bytes .../icons/favicon-32x32.png:Zone.Identifier | 0 .../img/icons/msapplication-icon-144x144.png | Bin 0 -> 1169 bytes ...plication-icon-144x144.png:Zone.Identifier | 0 .../public/img/icons/mstile-150x150.png | Bin 0 -> 4282 bytes .../icons/mstile-150x150.png:Zone.Identifier | 0 .../public/img/icons/safari-pinned-tab.svg | 149 + .../safari-pinned-tab.svg:Zone.Identifier | 0 .../public/img/loading-bubbles.svg | 14 + .../img/loading-bubbles.svg:Zone.Identifier | 0 .../public/img/mask.png | Bin 0 -> 756 bytes .../public/img/mask.png:Zone.Identifier | 0 .../public/img/new_logo.png | Bin 0 -> 3557 bytes .../public/img/new_logo.png:Zone.Identifier | 0 .../public/img/sidebar-1.jpg | Bin 0 -> 225399 bytes .../public/img/sidebar-1.jpg:Zone.Identifier | 0 .../public/img/sidebar-2.jpg | Bin 0 -> 129997 bytes .../public/img/sidebar-2.jpg:Zone.Identifier | 0 .../public/img/sidebar-3.jpg | Bin 0 -> 119572 bytes .../public/img/sidebar-3.jpg:Zone.Identifier | 0 .../public/img/sidebar-4.jpg | Bin 0 -> 143224 bytes .../public/img/sidebar-4.jpg:Zone.Identifier | 0 .../public/img/sidebar-5.jpg | Bin 0 -> 77287 bytes .../public/img/sidebar-5.jpg:Zone.Identifier | 0 .../public/img/tim_80x80.png | Bin 0 -> 4821 bytes .../public/img/tim_80x80.png:Zone.Identifier | 0 .../public/img/vue-logo.png | Bin 0 -> 4178 bytes .../public/img/vue-logo.png:Zone.Identifier | 0 .../public/index.html | 52 + .../public/index.html:Zone.Identifier | 0 .../public/manifest.json | 20 + .../public/manifest.json:Zone.Identifier | 0 .../public/robots.txt | 2 + .../public/robots.txt:Zone.Identifier | 0 .../src/App.vue | 38 + .../src/App.vue:Zone.Identifier | 0 .../src/assets/css/demo.css | 828 ++ .../src/assets/css/demo.css:Zone.Identifier | 0 .../src/assets/fonts/nucleo-icons.eot | Bin 0 -> 27560 bytes .../fonts/nucleo-icons.eot:Zone.Identifier | 0 .../src/assets/fonts/nucleo-icons.svg | 312 + .../fonts/nucleo-icons.svg:Zone.Identifier | 0 .../src/assets/fonts/nucleo-icons.ttf | Bin 0 -> 27376 bytes .../fonts/nucleo-icons.ttf:Zone.Identifier | 0 .../src/assets/fonts/nucleo-icons.woff | Bin 0 -> 15884 bytes .../src/assets/fonts/nucleo-icons.woff2 | Bin 0 -> 13344 bytes .../fonts/nucleo-icons.woff2:Zone.Identifier | 0 .../fonts/nucleo-icons.woff:Zone.Identifier | 0 .../src/assets/sass/lbd/_alerts.scss | 90 + .../sass/lbd/_alerts.scss:Zone.Identifier | 0 .../assets/sass/lbd/_bootstrap-switch.scss | 128 + .../_bootstrap-switch.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_buttons.scss | 132 + .../sass/lbd/_buttons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_cards.scss | 255 + .../sass/lbd/_cards.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_chartist.scss | 230 + .../sass/lbd/_chartist.scss:Zone.Identifier | 0 .../sass/lbd/_checkbox-radio-switch.scss | 142 + ...checkbox-radio-switch.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_dropdown.scss | 137 + .../sass/lbd/_dropdown.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_footers.scss | 75 + .../sass/lbd/_footers.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_inputs.scss | 141 + .../sass/lbd/_inputs.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_misc.scss | 129 + .../sass/lbd/_misc.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_mixins.scss | 22 + .../sass/lbd/_mixins.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_navbars.scss | 379 + .../sass/lbd/_navbars.scss:Zone.Identifier | 0 .../sass/lbd/_partial-nucleo-icons.scss | 577 + ..._partial-nucleo-icons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_responsive.scss | 479 + .../sass/lbd/_responsive.scss:Zone.Identifier | 0 .../sass/lbd/_sidebar-and-main-panel.scss | 455 + ...idebar-and-main-panel.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_tables.scss | 99 + .../sass/lbd/_tables.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_typography.scss | 90 + .../sass/lbd/_typography.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/_variables.scss | 263 + .../sass/lbd/_variables.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_buttons.scss | 70 + .../lbd/mixins/_buttons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_cards.scss | 8 + .../lbd/mixins/_cards.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_chartist.scss | 85 + .../lbd/mixins/_chartist.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_icons.scss | 13 + .../lbd/mixins/_icons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_inputs.scss | 17 + .../lbd/mixins/_inputs.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_labels.scss | 21 + .../lbd/mixins/_labels.scss:Zone.Identifier | 0 .../sass/lbd/mixins/_morphing-buttons.scss | 34 + .../_morphing-buttons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_navbars.scss | 11 + .../lbd/mixins/_navbars.scss:Zone.Identifier | 0 .../sass/lbd/mixins/_social-buttons.scss | 43 + .../_social-buttons.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/mixins/_tabs.scss | 4 + .../lbd/mixins/_tabs.scss:Zone.Identifier | 0 .../assets/sass/lbd/mixins/_transparency.scss | 20 + .../mixins/_transparency.scss:Zone.Identifier | 0 .../sass/lbd/mixins/_vendor-prefixes.scss | 211 + .../_vendor-prefixes.scss:Zone.Identifier | 0 .../src/assets/sass/lbd/plugins/_animate.scss | 227 + .../lbd/plugins/_animate.scss:Zone.Identifier | 0 .../sass/lbd/plugins/_datetime-picker.scss | 463 + .../_datetime-picker.scss:Zone.Identifier | 0 .../sass/light-bootstrap-dashboard.scss | 47 + ...t-bootstrap-dashboard.scss:Zone.Identifier | 0 .../src/components/BaseDropdown.vue | 55 + .../BaseDropdown.vue:Zone.Identifier | 0 .../src/components/Cards/Card.vue | 53 + .../components/Cards/Card.vue:Zone.Identifier | 0 .../src/components/Cards/ChartCard.vue | 137 + .../Cards/ChartCard.vue:Zone.Identifier | 0 .../src/components/Cards/StatsCard.vue | 32 + .../Cards/StatsCard.vue:Zone.Identifier | 0 .../src/components/Inputs/BaseCheckbox.vue | 52 + .../Inputs/BaseCheckbox.vue:Zone.Identifier | 0 .../src/components/Inputs/BaseInput.vue | 97 + .../Inputs/BaseInput.vue:Zone.Identifier | 0 .../src/components/Inputs/BaseRadio.vue | 49 + .../Inputs/BaseRadio.vue:Zone.Identifier | 0 .../NotificationPlugin/Notification.vue | 174 + .../Notification.vue:Zone.Identifier | 0 .../NotificationPlugin/Notifications.vue | 81 + .../Notifications.vue:Zone.Identifier | 0 .../components/NotificationPlugin/index.js | 66 + .../index.js:Zone.Identifier | 0 .../src/components/SidebarPlugin/SideBar.vue | 103 + .../SidebarPlugin/SideBar.vue:Zone.Identifier | 0 .../components/SidebarPlugin/SidebarLink.vue | 48 + .../SidebarLink.vue:Zone.Identifier | 0 .../src/components/SidebarPlugin/index.js | 39 + .../SidebarPlugin/index.js:Zone.Identifier | 0 .../src/components/Table.vue | 37 + .../src/components/Table.vue:Zone.Identifier | 0 .../src/components/index.js | 26 + .../src/components/index.js:Zone.Identifier | 0 .../src/directives/click-ouside.js | 15 + .../click-ouside.js:Zone.Identifier | 0 .../src/globalComponents.js | 21 + .../src/globalComponents.js:Zone.Identifier | 0 .../src/globalDirectives.js | 14 + .../src/globalDirectives.js:Zone.Identifier | 0 .../src/layout/Content.vue | 22 + .../src/layout/Content.vue:Zone.Identifier | 0 .../src/layout/ContentFooter.vue | 26 + .../layout/ContentFooter.vue:Zone.Identifier | 0 .../src/layout/DashboardLayout.vue | 77 + .../DashboardLayout.vue:Zone.Identifier | 0 .../src/layout/MobileMenu.vue | 43 + .../src/layout/MobileMenu.vue:Zone.Identifier | 0 .../src/layout/TopNavbar.vue | 102 + .../src/layout/TopNavbar.vue:Zone.Identifier | 0 .../src/light-bootstrap-main.js | 27 + .../light-bootstrap-main.js:Zone.Identifier | 0 .../src/main.js | 49 + .../src/main.js:Zone.Identifier | 0 .../src/pages/Icons.vue | 632 + .../src/pages/Icons.vue:Zone.Identifier | 0 .../src/pages/Maps.vue | 77 + .../src/pages/Maps.vue:Zone.Identifier | 0 .../src/pages/Maps/API_KEY.js | 1 + .../src/pages/Maps/API_KEY.js:Zone.Identifier | 0 .../src/pages/NotFoundPage.vue | 66 + .../pages/NotFoundPage.vue:Zone.Identifier | 0 .../src/pages/Notifications.vue | 131 + .../pages/Notifications.vue:Zone.Identifier | 0 .../src/pages/Overview.vue | 273 + .../src/pages/Overview.vue:Zone.Identifier | 0 .../src/pages/TableList.vue | 115 + .../src/pages/TableList.vue:Zone.Identifier | 0 .../src/pages/Typography.vue | 98 + .../src/pages/Typography.vue:Zone.Identifier | 0 .../src/pages/Upgrade.vue | 90 + .../src/pages/Upgrade.vue:Zone.Identifier | 0 .../src/pages/UserProfile.vue | 31 + .../src/pages/UserProfile.vue:Zone.Identifier | 0 .../src/pages/UserProfile/EditProfileForm.vue | 134 + .../EditProfileForm.vue:Zone.Identifier | 0 .../src/pages/UserProfile/UserCard.vue | 65 + .../UserProfile/UserCard.vue:Zone.Identifier | 0 .../src/registerServiceWorker.js | 32 + .../registerServiceWorker.js:Zone.Identifier | 0 .../src/routes/routes.js | 80 + .../src/routes/routes.js:Zone.Identifier | 0 .../vue.config.js | 44 + .../vue.config.js:Zone.Identifier | 0 288 files changed, 22037 insertions(+) create mode 100644 vue-light-bootstrap-dashboard-master/.babelrc create mode 100644 vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.editorconfig create mode 100644 vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.eslintrc create mode 100644 vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.github/workflows/main.yml create mode 100644 vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.gitignore create mode 100644 vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.npmrc create mode 100644 vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/.postcssrc.js create mode 100644 vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/CHANGELOG.md create mode 100644 vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md create mode 100644 vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/CONTRIBUTING.md create mode 100644 vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md create mode 100644 vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/LICENSE create mode 100644 vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/README.md create mode 100644 vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/demo.css create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/documentation.css create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css create mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/back.jpg create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/favicon.png create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png create mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html create mode 100644 vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/intelij.webpack.js create mode 100644 vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/package.json create mode 100644 vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/.gitkeep create mode 100644 vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/Dashboard.PNG create mode 100644 vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/favicon.png create mode 100644 vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/default-avatar.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe create mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.ico create mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/mask.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/new_logo.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg create mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/img/vue-logo.png create mode 100644 vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/index.html create mode 100644 vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/manifest.json create mode 100644 vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/public/robots.txt create mode 100644 vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/App.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/css/demo.css create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2 create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss create mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js create mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Table.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/components/index.js create mode 100644 vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js create mode 100644 vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/globalComponents.js create mode 100644 vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/globalDirectives.js create mode 100644 vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/Content.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js create mode 100644 vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/main.js create mode 100644 vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Icons.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Overview.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/TableList.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Typography.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js create mode 100644 vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/src/routes/routes.js create mode 100644 vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier create mode 100644 vue-light-bootstrap-dashboard-master/vue.config.js create mode 100644 vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier diff --git a/vue-light-bootstrap-dashboard-master/.babelrc b/vue-light-bootstrap-dashboard-master/.babelrc new file mode 100644 index 0000000..60e0e6e --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@vue/app", + { + "polyfills": ["es7.object.entries", "es6.promise"] + } + ] + ] +} diff --git a/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.editorconfig b/vue-light-bootstrap-dashboard-master/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.eslintrc b/vue-light-bootstrap-dashboard-master/.eslintrc new file mode 100644 index 0000000..125c71b --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.eslintrc @@ -0,0 +1,6 @@ +{ + "root": true, + "extends": [ + "plugin:vue/essential" + ] +} diff --git a/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml new file mode 100644 index 0000000..1c9daaf --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml @@ -0,0 +1,12 @@ +name: Autocloser +on: [issues] +jobs: + autoclose: + runs-on: ubuntu-latest + steps: + - name: Issue auto-closer + uses: roots/issue-closer-action@v1.1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow the bellow rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/vue-light-bootstrap-dashboard\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉  https://www.creative-tim.com/bundles\n👉  https://www.creative-tim.com\n\n\n
\n\n" + issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) diff --git a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.gitignore b/vue-light-bootstrap-dashboard-master/.gitignore new file mode 100644 index 0000000..971f8bb --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.gitignore @@ -0,0 +1,16 @@ +.DS_Store +node_modules/ +package-lock.json +yarn.lock +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +test/unit/coverage + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.npmrc b/vue-light-bootstrap-dashboard-master/.npmrc new file mode 100644 index 0000000..e9ee3cb --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/.postcssrc.js b/vue-light-bootstrap-dashboard-master/.postcssrc.js new file mode 100644 index 0000000..09948d6 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/.postcssrc.js @@ -0,0 +1,8 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + // to edit target browsers: use "browserslist" field in package.json + "autoprefixer": {} + } +} diff --git a/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/CHANGELOG.md b/vue-light-bootstrap-dashboard-master/CHANGELOG.md new file mode 100644 index 0000000..19ec314 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/CHANGELOG.md @@ -0,0 +1,19 @@ +# Change Log + +## [2.1.0] 2023-01-10 + +- Update dependencies and devDependencies +- Migrate from `node-sass` to `sass` +- Fix installation issue when running `npm i` + +## [2.0.0] 2019-02-14 + +- Update to Bootstrap 4 +- Update to Vue CLI 3 +- Several UI fixes & improvements +- Cleanup and simplify code structure +- Add pwa support + +## [1.0.0] 2017-06-18 + +### Stable Original Release diff --git a/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..15631cc --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at joracristi@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md new file mode 100644 index 0000000..3112703 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md @@ -0,0 +1,10 @@ +* Fork the repository +* Clone it on your PC +* `npm install` or `yarn install` +* Make changes, commit and open a PR + +### Notes +* Please don't use jQuery or jQuery based plugins since there are many pure Vue alternatives +* Write unit tests for your custom components. See fgInput.spec and paper-table.spec + +For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). diff --git a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..5cdc987 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md @@ -0,0 +1,13 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/LICENSE b/vue-light-bootstrap-dashboard-master/LICENSE new file mode 100644 index 0000000..97fc72f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Cristi Jora + +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/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier b/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/README.md b/vue-light-bootstrap-dashboard-master/README.md new file mode 100644 index 0000000..64223ba --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/README.md @@ -0,0 +1,57 @@ +# [Vue Light Bootstrap Dashboard](http://vuejs.creative-tim.com/vue-light-bootstrap-dashboard) [![version][version-badge]][changelog] [![license][license-badge]][license] + +> Admin dashboard based on light bootstrap dashboard UI template + vue-router + +This project is a vue version of [Light bootstrap dashboard](https://www.creative-tim.com/product/light-bootstrap-dashboard) +designed for vue js. The dashboard includes Bootstrap 4, vue-router, chartist, google-maps and several other plugins/components. + +Check the [Live Demo here](http://vuejs.creative-tim.com/vue-light-bootstrap-dashboard). + +![](public/Dashboard.PNG) + +## :rocket: Getting started + +Vue Light Bootstrap Dashboard is built on top of Bootstrap 4, Vuejs and Vue-router. To get started do the following steps: + +1. Download the project +2. Make sure you have node.js (https://nodejs.org/en/) installed +3. Type `npm install` in the source folder where `package.json` is located +4. Type `npm run dev` to start the development server + +The repo uses [vue-cli](https://github.com/vuejs/vue-cli) scaffolding which takes care of the development setup with webpack and all the necessary modern tools to make web development faster and easier. + +## [Documentation](https://demos.creative-tim.com/vue-light-bootstrap-dashboard/documentation/#/buttons) + +## :cloud: Build Setup + +### install dependencies + +`npm install` + +### serve with hot reload at localhost:8000 + +`npm run dev` + +### build for production with minification + +`npm run build` + +### run unit tests + +`npm run unit` + +### run and watch unit tests + +`npm run unit:watch` + +## :clipboard: Contribution guide + +- `npm install` or `yarn install` +- Please don't use jQuery or jQuery based plugins since there are many pure Vue alternatives + +For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). + +[changelog]: ./CHANGELOG.md +[license]: ./LICENSE.md +[version-badge]: https://img.shields.io/badge/version-2.1.0-blue.svg +[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg diff --git a/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css new file mode 100644 index 0000000..036b33e --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css @@ -0,0 +1,73 @@ +@media (min-width: 992px){ + .typo-line{ + padding-left: 140px; + margin-bottom: 40px; + position: relative; + } + + .typo-line .category{ + transform: translateY(-50%); + top: 50%; + left: 0px; + position: absolute; + } +} + +.icon-section { + margin: 0 0 3em; + clear: both; + overflow: hidden; +} +.icon-container { + width: 240px; + padding: .7em 0; + float: left; + position: relative; + text-align: left; +} +.icon-container [class^="ti-"], +.icon-container [class*=" ti-"] { + color: #000; + position: absolute; + margin-top: 3px; + transition: .3s; +} +.icon-container:hover [class^="ti-"], +.icon-container:hover [class*=" ti-"] { + font-size: 2.2em; + margin-top: -5px; +} +.icon-container:hover .icon-name { + color: #000; +} +.icon-name { + color: #aaa; + margin-left: 35px; + font-size: .8em; + transition: .3s; +} +.icon-container:hover .icon-name { + margin-left: 45px; +} + +.places-buttons .btn{ + margin-bottom: 30px +} +.sidebar .nav > li.active-pro{ + position: absolute; + width: 100%; + bottom: 10px; +} +.sidebar .nav > li.active-pro a{ + background: rgba(255, 255, 255, 0.14); + opacity: 1; + color: #FFFFFF; +} + +.table-upgrade td:nth-child(2), +.table-upgrade td:nth-child(3){ + text-align: center; +} +body.nude{ + background-color: #f4f3ef; +} diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css new file mode 100644 index 0000000..acd5bef --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css @@ -0,0 +1,203 @@ +.tim-row{ + padding-top: 60px; +} +pre.prettyprint{ + background-color: #eee; + border: 0px; + margin-bottom: 0; + margin-top: 20px; + padding: 20px; + text-align: left; +} +.atv, .str{ + color: #05AE0E; +} +.tag, .pln, .kwd{ + color: #3472F7; +} +.atn{ + color: #2C93FF; +} +.pln{ + color: #333; +} +.com{ + color: #999; +} +.space-top{ + margin-top: 50px; +} +.btn-primary .caret{ + border-top-color: #3472F7; + color: #3472F7; +} +.area-line{ + border: 1px solid #999; + border-left: 0; + border-right: 0; + color: #666; + display: block; + margin-top: 20px; + padding: 8px 0; + text-align: center; +} +.area-line a{ + color: #666; +} +.container-fluid{ + padding-right: 15px; + padding-left: 15px; +} +.logo-container .logo{ + overflow: hidden; + border-radius: 50%; + border: 1px solid #333333; + width: 50px; + float: left; +} +.header-wrapper { + position: relative; + height: 100%; +} + +.header-wrapper .navbar { + border-radius: 0; + position: absolute; + width: 100%; + z-index: 3; +} +.header-wrapper .header { + background-color: #ff8f5e; + background-position: center center; + background-size: cover; + height: 100%; + overflow: hidden; + position: absolute; + width: 100%; + z-index: 1; +} +.header-wrapper .header .filter::after { + content: ""; + display: block; + height: 100%; + left: 0; + opacity: 0.77; + position: absolute; + top: 0; + width: 100%; + z-index: 2; +} +.header-wrapper .title-container{ + color: #fff; + position: relative; + top: 30%; + z-index: 3; + +} +.logo-container .brand{ + font-size: 18px; + color: #FFFFFF; + line-height: 20px; + float: left; + margin-left: 10px; + margin-top: 5px; + width: 50px; + height: 50px; +} +.logo-container{ + margin-top: 10px; + margin-left: 15px; +} +.logo-container .logo img{ + width: 100%; +} +.navbar-small .logo-container .brand{ + color: #333333; +} +.fixed-section{ + top: 90px; + max-height: 493px; + overflow: scroll; + border-bottom: 1px solid rgba(220,220,220, .6); +} + +.fixed-section ul{ + padding: 0; +} + +.fixed-section.affix-top{ + margin-top: 90px; +} + +.fixed-section ul li{ + list-style: none; +} +.fixed-section li a{ + font-size: 14px; + padding: 2px; + display: block; + color: #666666; +} +.fixed-section li a.active{ + color: #00bbff; +} +.fixed-section.float{ + position: fixed; + top: 100px; + width: 200px; + margin-top: 0; +} +.copyright { + color: #777777; + padding: 10px 15px; + font-size: 14px; + margin: 15px 3px; + line-height: 20px; + text-align: center; +} + +.table-bigboy .img-container{ + width: 130px; + height: 85px; +} + +.table-bigboy .td-name{ + min-width: 170px; +} +#buttons-row .btn{ + margin-bottom: 15px; +} + +.navbar .navbar-nav > li > a.btn.btn-white, +.navbar .navbar-nav > li > a.btn.btn-white:hover, +.navbar .navbar-nav > li > a.btn.btn-white:focus{ + color: #FFFFFF; +} + +@media (min-width: 992px){ + .navbar { + min-height: 70px; + } +} + +.header-full{ + min-height: 100vh; + height: auto; + max-height: 999px; +} +.filter{ + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + height: 100%; + z-index: 0; + +} +.filter:after{ + background: #0a6715; + background: rgba(0, 0, 0, 0) linear-gradient(to bottom, #0ab961 0%, #0a6715 100%) repeat scroll 0 0 / 150% 150%; + height: 100% !important; +} diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css b/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css new file mode 100644 index 0000000..bf1ea4c --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css @@ -0,0 +1,11558 @@ +/*! + + ========================================================= + * Paper Dashboard PRO - V1.2.1 + ========================================================= + + * Product Page: https://www.creative-tim.com/product/paper-dashboard-pro + * Available with purchase of license from https://www.creative-tim.com/product/paper-dashboard-pro + * Copyright 2017 Creative Tim (https://www.creative-tim.com) + * License Creative Tim (https://www.creative-tim.com/license) + + ========================================================= + +*/ +/* light colors - used for select dropdown */ +/* Social buttons */ +.ct-blue { + stroke: #7A9E9F !important; +} + +.ct-azure { + stroke: #68B3C8 !important; +} + +.ct-green { + stroke: #7AC29A !important; +} + +.ct-orange { + stroke: #F3BB45 !important; +} + +.ct-red { + stroke: #EB5E28 !important; +} + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +.animated.bounceIn, +.animated.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +.animated.flipOutX, +.animated.flipOutY { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +@-webkit-keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} +@keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +@keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@keyframes fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +@keyframes fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +body.swal2-in { + overflow-y: hidden; +} + +body.swal2-iosfix { + position: fixed; + left: 0; + right: 0; +} + +.swal2-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 10px; + background-color: transparent; + z-index: 1060; +} + +.swal2-container:not(.swal2-in) { + pointer-events: none; +} + +.swal2-container.swal2-fade { + -webkit-transition: background-color .1s; + transition: background-color .1s; +} + +.swal2-container.swal2-in { + background-color: rgba(0, 0, 0, 0.4); +} + +.swal2-modal { + background-color: #FFFFFF; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + border-radius: 5px; + box-sizing: border-box; + text-align: center; + margin: auto; + overflow-x: hidden; + overflow-y: auto; + display: none; + position: relative; +} +.swal2-modal button { + margin: 0 5px; +} +.swal2-modal .form-control { + max-width: 300px; + margin: 0 auto; +} + +.swal2-modal:focus { + outline: none; +} + +.swal2-modal.swal2-loading { + overflow-y: hidden; +} + +.swal2-modal .swal2-title { + color: #595959; + font-size: 30px; + text-align: center; + font-weight: 600; + text-transform: none; + position: relative; + margin: 0; + padding: 0; + line-height: 60px; + display: block; +} + +.swal2-modal .swal2-spacer { + height: 10px; + color: transparent; + border: 0; +} + +.swal2-modal .swal2-styled { + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + cursor: pointer; + font-size: 17px; + font-weight: 500; + margin: 0 5px; + padding: 10px 32px; +} + +.swal2-modal .swal2-styled:not(.swal2-loading)[disabled] { + opacity: .4; + cursor: no-drop; +} + +.swal2-modal .swal2-styled.swal2-loading { + box-sizing: border-box; + border: 4px solid transparent; + border-color: transparent; + width: 40px; + height: 40px; + padding: 0; + margin: -2px 30px; + vertical-align: top; + background-color: transparent !important; + color: transparent; + cursor: default; + border-radius: 100%; + -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; + animation: rotate-loading 1.5s linear 0s infinite normal; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.swal2-modal :not(.swal2-styled).swal2-loading::after { + display: inline-block; + content: ''; + margin-left: 5px; + vertical-align: -1px; + height: 6px; + width: 6px; + border: 3px solid #999999; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; + animation: rotate-loading 1.5s linear 0s infinite normal; +} + +.swal2-modal .swal2-image { + margin: 20px auto; + max-width: 100%; +} + +.swal2-modal .swal2-close { + font-size: 36px; + line-height: 36px; + font-family: serif; + position: absolute; + top: 5px; + right: 13px; + cursor: pointer; + color: #cccccc; + -webkit-transition: color .1s ease; + transition: color .1s ease; +} + +.swal2-modal .swal2-close:hover { + color: #d55; +} + +.swal2-modal > .swal2-input, +.swal2-modal > .swal2-file, +.swal2-modal > .swal2-textarea, +.swal2-modal > .swal2-select, +.swal2-modal > .swal2-radio, +.swal2-modal > .swal2-checkbox { + display: none; +} + +.swal2-modal .swal2-content { + font-size: 18px; + text-align: center; + font-weight: 300; + position: relative; + float: none; + margin: 0; + padding: 0; + line-height: normal; + color: #545454; +} + +.swal2-modal .swal2-input, +.swal2-modal .swal2-file, +.swal2-modal .swal2-textarea, +.swal2-modal .swal2-select, +.swal2-modal .swal2-radio, +.swal2-modal .swal2-checkbox { + margin: 20px auto; +} + +.swal2-modal .swal2-input, +.swal2-modal .swal2-file, +.swal2-modal .swal2-textarea { + width: 100%; + box-sizing: border-box; + border-radius: 3px; + border: 1px solid #d9d9d9; + font-size: 18px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06); + -webkit-transition: border-color box-shadow .3s; + transition: border-color box-shadow .3s; +} + +.swal2-modal .swal2-input.swal2-inputerror, +.swal2-modal .swal2-file.swal2-inputerror, +.swal2-modal .swal2-textarea.swal2-inputerror { + border-color: #f06e57; +} + +.swal2-modal .swal2-input:focus, +.swal2-modal .swal2-file:focus, +.swal2-modal .swal2-textarea:focus { + outline: none; + box-shadow: 0 0 3px #c4e6f5; + border: 1px solid #b4dbed; +} + +.swal2-modal .swal2-input:focus::-webkit-input-placeholder, +.swal2-modal .swal2-file:focus::-webkit-input-placeholder, +.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder { + -webkit-transition: opacity .3s .03s ease; + transition: opacity .3s .03s ease; + opacity: .8; +} + +.swal2-modal .swal2-input:focus::-moz-placeholder, +.swal2-modal .swal2-file:focus::-moz-placeholder, +.swal2-modal .swal2-textarea:focus::-moz-placeholder { + -webkit-transition: opacity .3s .03s ease; + transition: opacity .3s .03s ease; + opacity: .8; +} + +.swal2-modal .swal2-input:focus:-ms-input-placeholder, +.swal2-modal .swal2-file:focus:-ms-input-placeholder, +.swal2-modal .swal2-textarea:focus:-ms-input-placeholder { + -webkit-transition: opacity .3s .03s ease; + transition: opacity .3s .03s ease; + opacity: .8; +} + +.swal2-modal .swal2-input:focus::placeholder, +.swal2-modal .swal2-file:focus::placeholder, +.swal2-modal .swal2-textarea:focus::placeholder { + -webkit-transition: opacity .3s .03s ease; + transition: opacity .3s .03s ease; + opacity: .8; +} + +.swal2-modal .swal2-input::-webkit-input-placeholder, +.swal2-modal .swal2-file::-webkit-input-placeholder, +.swal2-modal .swal2-textarea::-webkit-input-placeholder { + color: #e6e6e6; +} + +.swal2-modal .swal2-input::-moz-placeholder, +.swal2-modal .swal2-file::-moz-placeholder, +.swal2-modal .swal2-textarea::-moz-placeholder { + color: #e6e6e6; +} + +.swal2-modal .swal2-input:-ms-input-placeholder, +.swal2-modal .swal2-file:-ms-input-placeholder, +.swal2-modal .swal2-textarea:-ms-input-placeholder { + color: #e6e6e6; +} + +.swal2-modal .swal2-input::placeholder, +.swal2-modal .swal2-file::placeholder, +.swal2-modal .swal2-textarea::placeholder { + color: #e6e6e6; +} + +.swal2-modal .swal2-range input { + float: left; + width: 80%; +} + +.swal2-modal .swal2-range output { + float: right; + width: 20%; + font-size: 20px; + font-weight: 600; + text-align: center; +} + +.swal2-modal .swal2-range input, +.swal2-modal .swal2-range output { + height: 43px; + line-height: 43px; + vertical-align: middle; + margin: 20px auto; + padding: 0; +} + +.swal2-modal .swal2-input { + height: 43px; + padding: 0 12px; +} + +.swal2-modal .swal2-input[type='number'] { + max-width: 150px; +} + +.swal2-modal .swal2-file { + font-size: 20px; +} + +.swal2-modal .swal2-textarea { + height: 108px; + padding: 12px; +} + +.swal2-modal .swal2-select { + color: #545454; + font-size: inherit; + padding: 5px 10px; + min-width: 40%; + max-width: 100%; +} + +.swal2-modal .swal2-radio { + border: 0; +} + +.swal2-modal .swal2-radio label:not(:first-child) { + margin-left: 20px; +} + +.swal2-modal .swal2-radio input, +.swal2-modal .swal2-radio span { + vertical-align: middle; +} + +.swal2-modal .swal2-radio input { + margin: 0 3px 0 0; +} + +.swal2-modal .swal2-checkbox { + color: #545454; +} + +.swal2-modal .swal2-checkbox input, +.swal2-modal .swal2-checkbox span { + vertical-align: middle; +} + +.swal2-modal .swal2-validationerror { + background-color: #f0f0f0; + margin: 0 -20px; + overflow: hidden; + padding: 10px; + color: gray; + font-size: 16px; + font-weight: 300; + display: none; +} + +.swal2-modal .swal2-validationerror::before { + content: '!'; + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #ea7d7d; + color: #fff; + line-height: 24px; + text-align: center; + margin-right: 10px; +} + +@supports (-ms-accelerator: true) { + .swal2-range input { + width: 100% !important; + } + + .swal2-range output { + display: none; + } +} +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + .swal2-range input { + width: 100% !important; + } + + .swal2-range output { + display: none; + } +} +.swal2-icon { + width: 80px; + height: 80px; + border: 4px solid transparent; + border-radius: 50%; + margin: 20px auto 30px; + padding: 0; + position: relative; + box-sizing: content-box; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.swal2-icon.swal2-error { + border-color: #f27474; +} + +.swal2-icon.swal2-error .x-mark { + position: relative; + display: block; +} + +.swal2-icon.swal2-error .line { + position: absolute; + height: 5px; + width: 47px; + background-color: #f27474; + display: block; + top: 37px; + border-radius: 2px; +} + +.swal2-icon.swal2-error .line.left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; +} + +.swal2-icon.swal2-error .line.right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; +} + +.swal2-icon.swal2-warning .body { + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + border-radius: 2px; + margin-left: -2px; + background-color: #FFA534; +} + +.swal2-icon.swal2-warning .dot { + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: #FFA534; +} + +.swal2-icon.swal2-warning { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #F3BB45; + border-color: #F3BB45; + font-size: 60px; + line-height: 80px; + text-align: center; +} + +.swal2-icon.swal2-info { + font-family: 'Open Sans', sans-serif; + color: #68B3C8; + border-color: #68B3C8; + font-size: 60px; + line-height: 80px; + text-align: center; +} + +.swal2-icon.swal2-question { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #87adbd; + border-color: #c9dae1; + font-size: 60px; + line-height: 80px; + text-align: center; +} + +.swal2-icon.swal2-success { + border-color: #7AC29A; +} + +.swal2-icon.swal2-success::before, .swal2-icon.swal2-success::after { + content: ''; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: #fff; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +.swal2-icon.swal2-success::before { + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; +} + +.swal2-icon.swal2-success::after { + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0 60px; + transform-origin: 0 60px; +} + +.swal2-icon.swal2-success .placeholder { + width: 80px; + height: 80px; + border: 4px solid rgba(165, 220, 134, 0.2); + border-radius: 50%; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2; +} + +.swal2-icon.swal2-success .fix { + width: 7px; + height: 90px; + background-color: #fff; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.swal2-icon.swal2-success .line { + height: 5px; + background-color: #a5dc86; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2; +} + +.swal2-icon.swal2-success .line.tip { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} + +.swal2-icon.swal2-success .line.long { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.swal2-progresssteps { + font-weight: 600; + margin: 0 0 20px; + padding: 0; +} + +.swal2-progresssteps li { + display: inline-block; + position: relative; +} + +.swal2-progresssteps .swal2-progresscircle { + background: #3085d6; + border-radius: 2em; + color: #fff; + height: 2em; + line-height: 2em; + text-align: center; + width: 2em; + z-index: 20; +} + +.swal2-progresssteps .swal2-progresscircle:first-child { + margin-left: 0; +} + +.swal2-progresssteps .swal2-progresscircle:last-child { + margin-right: 0; +} + +.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep { + background: #3085d6; +} + +.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle { + background: #add8e6; +} + +.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline { + background: #add8e6; +} + +.swal2-progresssteps .swal2-progressline { + background: #3085d6; + height: .4em; + margin: 0 -1px; + z-index: 10; +} + +[class^='swal2'] { + -webkit-tap-highlight-color: transparent; +} + +@-webkit-keyframes showSweetAlert { + 0% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + } + 45% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 80% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes showSweetAlert { + 0% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + } + 45% { + -webkit-transform: scale(1.05); + transform: scale(1.05); + } + 80% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@-webkit-keyframes hideSweetAlert { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 100% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 0; + } +} +@keyframes hideSweetAlert { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 100% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 0; + } +} +.swal2-show { + -webkit-animation: showSweetAlert 0.3s; + animation: showSweetAlert 0.3s; +} + +.swal2-show.swal2-noanimation { + -webkit-animation: none; + animation: none; +} + +.swal2-hide { + -webkit-animation: hideSweetAlert 0.15s forwards; + animation: hideSweetAlert 0.15s forwards; +} + +.swal2-hide.swal2-noanimation { + -webkit-animation: none; + animation: none; +} + +@-webkit-keyframes animate-success-tip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + 100% { + width: 25px; + left: 14px; + top: 45px; + } +} +@keyframes animate-success-tip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + 100% { + width: 25px; + left: 14px; + top: 45px; + } +} +@-webkit-keyframes animate-success-long { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0; + top: 35px; + } + 100% { + width: 47px; + right: 8px; + top: 38px; + } +} +@keyframes animate-success-long { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0; + top: 35px; + } + 100% { + width: 47px; + right: 8px; + top: 38px; + } +} +@-webkit-keyframes rotatePlaceholder { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 5% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 12% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg); + } + 100% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg); + } +} +@keyframes rotatePlaceholder { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 5% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + } + 12% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg); + } + 100% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg); + } +} +.animate-success-tip { + -webkit-animation: animate-success-tip 0.75s; + animation: animate-success-tip 0.75s; +} + +.animate-success-long { + -webkit-animation: animate-success-long 0.75s; + animation: animate-success-long 0.75s; +} + +.swal2-success.animate::after { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in; +} + +@-webkit-keyframes animate-error-icon { + 0% { + -webkit-transform: rotateX(100deg); + transform: rotateX(100deg); + opacity: 0; + } + 100% { + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes animate-error-icon { + 0% { + -webkit-transform: rotateX(100deg); + transform: rotateX(100deg); + opacity: 0; + } + 100% { + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); + opacity: 1; + } +} +.animate-error-icon { + -webkit-animation: animate-error-icon 0.5s; + animation: animate-error-icon 0.5s; +} + +@-webkit-keyframes animate-x-mark { + 0% { + -webkit-transform: scale(0.4); + transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + -webkit-transform: scale(0.4); + transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + margin-top: -6px; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +@keyframes animate-x-mark { + 0% { + -webkit-transform: scale(0.4); + transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + -webkit-transform: scale(0.4); + transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + margin-top: -6px; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +.animate-x-mark { + -webkit-animation: animate-x-mark 0.5s; + animation: animate-x-mark 0.5s; +} + +@-webkit-keyframes pulse-warning { + 0% { + border-color: #FAE6A4; + } + 100% { + border-color: #FFA534; + } +} +@keyframes pulse-warning { + 0% { + border-color: #FAE6A4; + } + 100% { + border-color: #FFA534; + } +} +.pulse-warning { + -webkit-animation: pulse-warning 0.75s infinite alternate; + animation: pulse-warning 0.75s infinite alternate; +} + +@-webkit-keyframes rotate-loading { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes rotate-loading { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/** + * @author zhixin wen + * version: 1.8.1 + * https://github.com/wenzhixin/bootstrap-table/ + */ +.bootstrap-table .table { + margin-bottom: 0 !important; + border-bottom: 1px solid #cfcfca; + border-collapse: collapse !important; + border-radius: 1px; +} + +.bootstrap-table .table, +.bootstrap-table .table > tbody > tr > th, +.bootstrap-table .table > tfoot > tr > th, +.bootstrap-table .table > thead > tr > td, +.bootstrap-table .table > tbody > tr > td, +.bootstrap-table .table > tfoot > tr > td { + padding: 8px !important; +} + +.bootstrap-table .table > tbody > .selected { + background-color: rgba(122, 158, 159, 0.2); +} + +.bootstrap-table .table.table-no-bordered > thead > tr > th, +.bootstrap-table .table.table-no-bordered > tbody > tr > td { + border-right: 2px solid transparent; +} + +.fixed-table-container { + position: relative; + clear: both; +} + +.fixed-table-container.table-no-bordered { + border: 1px solid transparent; +} + +.fixed-table-footer, +.fixed-table-header { + overflow: hidden; +} + +.fixed-table-footer { + border-top: 1px solid #cfcfca; +} + +.fixed-table-body { + height: 100%; + overflow: auto; +} + +.fixed-table-container table { + width: 100%; +} + +.fixed-table-container thead th { + height: 0; + padding: 0; + margin: 0; +} + +.fixed-table-container thead th:first-child { + border-left: none; +} + +.fixed-table-container thead th .th-inner { + padding: 0 8px; + line-height: 24px; + vertical-align: top; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.fixed-table-container thead th .sortable { + cursor: pointer; + background-repeat: no-repeat; + padding-right: 30px; +} + +.fixed-table-container thead th .both { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC"); + background-position: right 2px; +} + +.fixed-table-container thead th .asc { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAACASURBVHja7NKhDcJQFIbRV1MSEqaoYwYMYyARR6HZowzAHqguUolHYEgxD9MmTYPpA1JEb/KZK476Q4wxfKvwc6x/WKJE3v+nYkc8cfgIwxpXRNQokjBkOLdQ1wlZCrbFbYDdsRmFYYVqAHVdsBiD7dHg8aYGu2l2NmMz9s/YawDpU8qkYQTHqgAAAABJRU5ErkJggg=="); + background-position: right 5px; +} + +.fixed-table-container thead th .desc { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAACFSURBVHja7NKhDcJQFIbRWwMJCVPgmKGGMZCIo9DsAQOwRxWLIPEIDCnmYR4JaSp4DYKQis/8NznqRkopvlWM2Ij9BYY1Wtx7arEpwaZokHo6Yf4xFhGBGrcOdMUqIqIUq3DoYEdUxVgGFzhn6ILl61aMZXCLB3bv+1Bsgj1mg7CfeNrnAMXSyqQtsCNeAAAAAElFTkSuQmCC"); + background-position: right 0px; +} + +.fixed-table-container th.detail { + width: 30px; +} + +.fixed-table-container tbody tr:first-child td { + border-top: none; +} + +.fixed-table-container tbody td:first-child { + border-left: none; +} + +/* the same color with .active */ +.fixed-table-container tbody .selected td { + background-color: rgba(245, 245, 245, 0.34); +} + +.fixed-table-container .bs-checkbox { + text-align: center; +} + +.fixed-table-container .bs-checkbox .th-inner { + padding: 8px 0; +} + +.fixed-table-container input[type="radio"], +.fixed-table-container input[type="checkbox"] { + margin: 0 auto !important; + cursor: pointer; +} + +.fixed-table-container .no-records-found { + text-align: center; + background-color: #FFFFFF !important; + height: 340px; + border-radius: 10px; + width: 100%; + vertical-align: middle; +} + +.fixed-table-container .no-records-found td { + font-weight: 300; + font-size: 1.5em; +} + +.fixed-table-pagination div.pagination, +.fixed-table-pagination .pagination-detail { + margin-top: 10px; + margin-bottom: 10px; +} + +.fixed-table-pagination div.pagination .pagination { + margin: 0; +} + +.fixed-table-pagination .pagination a { + padding: 6px 12px; + line-height: 1.428571429; +} + +.fixed-table-pagination .pagination-info { + line-height: 34px; +} + +.fixed-table-pagination .btn-group { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.fixed-table-pagination .page-list { + display: inline-block; +} + +.fixed-table-toolbar { + padding: 5px 0; +} + +.fixed-table-toolbar .columns-left { + margin-right: 5px; +} + +.fixed-table-toolbar .columns-right { + margin-left: 5px; +} + +.fixed-table-toolbar .columns .btn { + margin: 0 2px; + border-radius: 30px; +} + +.columns-right .btn-group .btn { + margin-right: 0; +} + +.columns-left .btn:first-child { + margin-left: 0; +} + +.pull-right .pagination .page-last a { + margin-right: 0; +} + +.pull-left .pagination .page-first a { + margin-left: 0; +} + +.bootstrap-table .td-actions .th-inner { + padding-right: 17px; +} + +.fixed-table-toolbar .columns label { + display: block; + padding: 10px 20px; + border-bottom: 1px solid #E3E3E3; + clear: both; + margin-bottom: 0; + font-weight: normal; + line-height: 1.428571429; +} + +.fixed-table-toolbar .columns li:last-child label { + border-bottom: none; +} + +.fixed-table-toolbar .bars, +.fixed-table-toolbar .search, +.fixed-table-toolbar .columns { + position: relative; + margin-top: 10px; + margin-bottom: 10px; + line-height: 34px; +} + +.fixed-table-toolbar .search { + margin-left: 0; +} + +.fixed-table-pagination li.disabled a { + pointer-events: none; + cursor: default; +} + +.fixed-table-loading { + display: none; + position: absolute; + top: 42px; + right: 0; + bottom: 0; + left: 0; + z-index: 99; + background-color: #FFFFFF; + text-align: center; +} + +.fixed-table-body .card-view .title { + font-weight: bold; + display: inline-block; + min-width: 30%; + text-align: left !important; +} + +/* support bootstrap 2 */ +.fixed-table-body thead th .th-inner { + box-sizing: border-box; +} + +.table th, .table td { + vertical-align: middle; + box-sizing: border-box; +} + +.fixed-table-toolbar .btn-group > .btn-group { + display: inline-block; + margin-left: -1px !important; +} + +.fixed-table-toolbar .dropdown-menu label { + cursor: pointer; +} + +.fixed-table-toolbar .btn-group > .btn-group > .btn { + border-radius: 0; +} + +.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +/* support bootstrap 3 */ +.bootstrap-table .table thead > tr > th { + padding: 0; + margin: 0; +} + +.pull-right .dropdown-menu { + right: 0; + left: auto; +} + +/* calculate scrollbar width */ +p.fixed-table-scroll-inner { + width: 100%; + height: 200px; +} + +div.fixed-table-scroll-outer { + top: 0; + left: 0; + visibility: hidden; + width: 200px; + height: 150px; + overflow: hidden; +} + +.bootstrap-table .fixed-table-pagination:after { + display: table; + content: ""; + clear: both; +} +.bootstrap-table .fixed-table-pagination .page-list .btn { + border-radius: 30px; +} +.bootstrap-table .fixed-table-pagination .page-list .btn-group { + margin-right: 5px; +} +.bootstrap-table .fixed-table-pagination div.pagination, +.bootstrap-table .fixed-table-pagination .pagination-detail { + margin-top: 15px; + margin-bottom: 15px; +} +.bootstrap-table .table.table-striped > thead > tr > td, .bootstrap-table .table.table-striped > tbody > tr > td, .bootstrap-table .table.table-striped > tfoot > tr > td { + border: none; +} + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} + +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} + +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} + +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} + +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} + +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} + +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} + +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} + +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; + /* sort */ +} + +table.dataTable thead .sorting_asc:after { + content: "\e155"; + /* sort-by-attributes */ +} + +table.dataTable thead .sorting_desc:after { + content: "\e156"; + /* sort-by-attributes-alt */ +} + +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table thead .sorting:after, +div.dataTables_scrollBody table thead .sorting_asc:after, +div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; +} + +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} + +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} + +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} + +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} + +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: relative; + display: inline-block; + bottom: 0px; + right: -7px; + font-family: 'FontAwesome'; + opacity: 0.8; +} +table.dataTable thead .disabled-sorting.sorting:after, +table.dataTable thead .disabled-sorting.sorting_asc:after, +table.dataTable thead .disabled-sorting.sorting_desc:after, +table.dataTable thead .disabled-sorting.sorting_asc_disabled:after, +table.dataTable thead .disabled-sorting.sorting_desc_disabled:after { + display: none; +} +table.dataTable thead .sorting:after { + opacity: 0.4; + content: "\f0dc"; +} +table.dataTable thead .sorting_asc:after { + content: "\f0de"; + top: 3px; +} +table.dataTable thead .sorting_desc:after { + content: "\f0dd"; + top: -3px; +} +table.dataTable .table-hover > tbody > tr:hover { + background-color: #e8e7df; +} +table.dataTable .table > thead > tr > th, +table.dataTable .table > tbody > tr > th, +table.dataTable .table > tfoot > tr > th, +table.dataTable .table > thead > tr > td, +table.dataTable .table > tbody > tr > td, +table.dataTable .table > tfoot > tr > td { + padding: 8px !important; + outline: 0; +} +table.dataTable .btn.btn-icon { + margin: 0 3px; + padding: 5px 8px; +} + +.dataTables_paginate a { + outline: 0; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty { + cursor: default !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before { + display: none !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child { + position: relative; + padding-left: 30px; + cursor: pointer; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { + top: 50%; + margin-top: -9px; + left: 4px; + height: 18px; + width: 18px; + display: block; + position: absolute; + color: #518607; + border: 0px solid white; + border-radius: 14px; + box-shadow: 0 0 3px #444; + box-sizing: content-box; + text-align: center; + font-family: 'Courier New', Courier, monospace; + line-height: 18px; + content: '+'; + background-color: #FFF; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { + content: '-'; + color: #ED362C; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before { + display: none; +} + +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child { + padding-left: 27px; +} +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before { + top: 5px; + left: 4px; + height: 14px; + width: 14px; + border-radius: 14px; + line-height: 14px; + text-indent: 3px; +} + +table.dataTable.dtr-column > tbody > tr > td.control, +table.dataTable.dtr-column > tbody > tr > th.control { + position: relative; + cursor: pointer; +} +table.dataTable.dtr-column > tbody > tr > td.control:before, +table.dataTable.dtr-column > tbody > tr > th.control:before { + top: 50%; + left: 50%; + height: 16px; + width: 16px; + margin-top: -10px; + margin-left: -10px; + display: block; + position: absolute; + color: white; + border: 2px solid white; + border-radius: 14px; + box-shadow: 0 0 3px #444; + box-sizing: content-box; + text-align: center; + font-family: 'Courier New', Courier, monospace; + line-height: 14px; + content: '+'; + background-color: #31b131; +} +table.dataTable.dtr-column > tbody > tr.parent td.control:before, +table.dataTable.dtr-column > tbody > tr.parent th.control:before { + content: '-'; + background-color: #d33333; +} + +table.dataTable > tbody > tr.child { + padding: 0.5em 1em; +} +table.dataTable > tbody > tr.child:hover { + background: transparent !important; +} +table.dataTable > tbody > tr.child ul { + display: inline-block; + list-style-type: none; + margin: 0; + padding: 0; +} +table.dataTable > tbody > tr.child ul li { + border-bottom: 1px solid #efefef; + padding: 0.5em 0; +} +table.dataTable > tbody > tr.child ul li:first-child { + padding-top: 0; +} +table.dataTable > tbody > tr.child ul li:last-child { + border-bottom: none; +} +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 75px; + font-weight: bold; +} + +div.dtr-modal { + position: fixed; + box-sizing: border-box; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 100; + padding: 10em 1em; +} +div.dtr-modal div.dtr-modal-display { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 50%; + height: 50%; + overflow: auto; + margin: auto; + z-index: 102; + overflow: auto; + background-color: #f5f5f7; + border: 1px solid black; + border-radius: 0.5em; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); +} +div.dtr-modal div.dtr-modal-content { + position: relative; + padding: 1em; +} +div.dtr-modal div.dtr-modal-close { + position: absolute; + top: 6px; + right: 6px; + width: 22px; + height: 22px; + border: 1px solid #eaeaea; + background-color: #f9f9f9; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 12; +} +div.dtr-modal div.dtr-modal-close:hover { + background-color: #eaeaea; +} +div.dtr-modal div.dtr-modal-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background: rgba(0, 0, 0, 0.6); +} + +@media screen and (max-width: 767px) { + div.dtr-modal div.dtr-modal-display { + width: 95%; + } +} +/*! + * FullCalendar v3.1.0 Stylesheet + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ +.fc { + direction: ltr; + text-align: left; +} + +.fc-rtl { + text-align: right; +} + +body .fc { + /* extra precedence to overcome jqui */ + font-size: 1em; +} + +/* Colors +--------------------------------------------------------------------------------------------------*/ +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-divider, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #ddd; +} + +.fc-unthemed .fc-popover { + background-color: #FFFFFF; +} + +.fc-unthemed .fc-divider, +.fc-unthemed .fc-popover .fc-header { + background: #E3E3E3; +} + +.fc-unthemed .fc-popover .fc-header .fc-close { + color: #666666; +} + +.fc-unthemed .fc-today { + background: #F5F5F5; +} + +.fc-highlight { + /* when user is selecting cells */ + background: #bce8f1; + opacity: .3; + filter: alpha(opacity=30); + /* for IE */ +} + +.fc-bgevent { + /* default look for background events */ + background: #8fdf82; + opacity: .3; + filter: alpha(opacity=30); + /* for IE */ +} + +.fc-nonbusiness { + /* default look for non-business-hours areas */ + /* will inherit .fc-bgevent's styles */ + background: #d7d7d7; +} + +/* Icons (inline elements with styled text that mock arrow icons) +--------------------------------------------------------------------------------------------------*/ +.fc-icon { + display: inline-block; + width: 1em; + height: 1em; + line-height: 1em; + font-size: 1em; + text-align: center; + overflow: hidden; + font-family: "Courier New", Courier, monospace; + /* don't allow browser text-selection */ + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* +Acceptable font-family overrides for individual icons: + "Arial", sans-serif + "Times New Roman", serif + +NOTE: use percentage font sizes or else old IE chokes +*/ +.fc-icon:after { + position: relative; + margin: 0 -1em; + /* ensures character will be centered, regardless of width */ +} + +.fc-icon-left-single-arrow:after { + content: "\02039"; + font-weight: bold; + font-size: 200%; + top: -7%; + left: 3%; +} + +.fc-icon-right-single-arrow:after { + content: "\0203A"; + font-weight: bold; + font-size: 200%; + top: -7%; + left: -3%; +} + +.fc-icon-left-double-arrow:after { + content: "\000AB"; + font-size: 160%; + top: -7%; +} + +.fc-icon-right-double-arrow:after { + content: "\000BB"; + font-size: 160%; + top: -7%; +} + +.fc-icon-left-triangle:after { + content: "\25C4"; + font-size: 125%; + top: 3%; + left: -2%; +} + +.fc-icon-right-triangle:after { + content: "\25BA"; + font-size: 125%; + top: 3%; + left: 2%; +} + +.fc-icon-down-triangle:after { + content: "\25BC"; + font-size: 125%; + top: 2%; +} + +.fc-icon-x:after { + content: "\000D7"; + font-size: 200%; + top: 6%; +} + +/* Buttons (styled + +
+ +
Creative Tim
+
+
+ + + + + + + + + +
+
+
+
+

Vue Light Bootstrap Dashboard

+

v2.1.0

+

+ We are constantly doing updates for you. +

+ View Documentation +
+
+
+ + diff --git a/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/intelij.webpack.js b/vue-light-bootstrap-dashboard-master/intelij.webpack.js new file mode 100644 index 0000000..2f49f38 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/intelij.webpack.js @@ -0,0 +1,12 @@ +// This configuration file is not used anywhere in the code, it's a hack to handle InteliJ relative path imports +// Keep in sync with actual webpack aliases + +const path = require('path'); + +module.exports = { + resolve: { + alias: { + '@': path.resolve(__dirname, 'src') + } + } +}; diff --git a/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/package.json b/vue-light-bootstrap-dashboard-master/package.json new file mode 100644 index 0000000..1144c7f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/package.json @@ -0,0 +1,40 @@ +{ + "name": "vue-light-bootstrap-dashboard", + "version": "2.1.0", + "private": true, + "description": "Vue light bootstrap dashboard", + "author": "cristijora ", + "scripts": { + "serve": "vue-cli-service serve --port 8080", + "build": "vue-cli-service build --watch", + "e2e": "node test/e2e/runner.js", + "lint": "vue-cli-service lint", + "dev": "vue-cli-service serve --open", + "lint-fix": "vue-cli-service lint --fix" + }, + "dependencies": { + "bootstrap": "4.6.0", + "cache-loader": "^4.1.0", + "chartist": "0.11.0", + "google-maps": "3.2.1", + "register-service-worker": "1.7.2", + "v-tooltip": "2.0.0-rc.33", + "vue": "2.7.14", + "vue-router": "3.0.2", + "vue2-google-maps": "0.10.7" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "3.12.1", + "@vue/cli-plugin-eslint": "3.12.1", + "@vue/cli-plugin-pwa": "3.12.1", + "@vue/cli-service": "3.12.1", + "sass": "1.56.2", + "sass-loader": "10.1.1", + "vue-template-compiler": "2.7.14" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 11" + ] +} diff --git a/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier b/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/.gitkeep b/vue-light-bootstrap-dashboard-master/public/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ece0e3082b40bf6c5c7803c823fc4e8501107f60 GIT binary patch literal 224552 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 z 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

&K?BaRioRM2Ul-V35H>C4=co zIfI#+^E-7}mmG}&%H(Uaa3zIPUTH9EWRK24=jcWaMpgfE z@Yz>*HiiKde|}!7x>3=`F&Z_^M#5pmDs5k$0dD+QqGXzyBW`co1X^jT)|9Vlq-D2K*e?d1xhVqf`;#_eCVNJ8MLMJBC9 zZa+n%e_M=kQ46}|YuiDeMNTjo=AAOE^R zNZ@UsAK`eeeJs3?_Bn^WdD|?3U8KV>TI1NmKbfA_H7@LL8WCMK{t+%>o6N zb*V2%8&R>+X|y+yt%$&_QG4cv91tb$4*_3ilZ zfTX{n+m5O>+->jWXWEMKx;Ias9=$#HcclCu{R&F>bc+iFf>-*C&|-bDk}DqPBM>HB zmk_~7vld;{YCM-9eEO16suMK$E%i&0)1+zmveGKSar3*)H+Y3drv*7cC?dpTFocX; zC#Cj9I&Hpfqzi*Z^0|k6TWRkPS%CPg4Bdu_Y-BSofQ1GmfOZ`YUM%o|(U=TirhO1f zb0oZRqi2=KH8UpAuv?HyY<<3bct{q5hw+KYM26VJ7pa+$4erpWz;Zh{5_8a|bjYE(%RLUN~E zJg<4!CG^Wczv`R|5E;bDZmgh0W_=-=Uyu^bZd}02a^f{yRG7tS(H<~&m}JY~^K(p! za(X7FYAh@io1=#2la5H-LE>1xuKW9-XBTqBfIhkaIZ5Kz_FCc$>BZhnsNInS!Fxsa z*^Q92+c_@H^`I|Zs9cU*NYg7<&fLxKGNHXKMb13D_1Mb*)cElt<=KoZd@}T_@af

*?EPk9lm`;XXd9~ zaIAjOWXqT++!j8H)Gtn)2#Tmw>rePaU4GqV$7JjK`E?Ya zQ26lEa&lcFg?({6H658CjBrHlgiN#1ie)ASuk*)SN@gF`AZ^e-);fbUQdp|6!vZ#$|3s%P@?xZ1_K-N1x3~BnKgytM!yw zTKBfey^nHJzQmo_pg`nL_MJv)H>Gr&>8>Gfc($h2;$f6&)sn!)%>+)MJKd5e?3nl7 zmJRk8XM3qQ&aP4`!^`y1!cD_KuF5c}1$SRdU7u%{gyA8}h6!6$Fo7ZH7f``n||U8_XLb`PWqSwpRo6k(j#;av4MfL8S7@ZREes6uMQsd3@<~VjixS$JSr%Eq}AH270sI zV7Yb=@j6EHgPEDxML)0Lit{IDnue`hd0wmr8f|OgKLg3|C`zbJXD~AE$AhUakp8w= z-zEivX%`1>nx2!=eLd3u%qExP#ky*$`P5Q_P zT@LRHS5)q;6pGnu;oM-*tk8Wkp0ZJHvwypVts=CJVEarEyt5d!;Iq4kzWM>IWR@_it}|tE->hi{|d`Xr8)>q+W*8w>O{qaRaF|_;X3L zbsO2IR`Tar^!o0@Wy`?a4usX>g-3J2QBg+|<^wQ7fyREjQ9gS+f~&~6>m3kah3E*^ zkFW2u-El8ot^|Dp?H=bOO`McjdS6dtzj7qfE~ ZLgvRUj{Gpa175q3%P($@6np=;{{!!q3-15` literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca9fa88471a83781acf0c00784d5b4bad2ca487b GIT binary patch literal 2864 zcmW-j2UL^E7RNsVNa(R3EDs{E;vy)kf(p{hO4(f=^5CI7P!!!&Tv3qfDgp^z2@rZq zA=E&qp(H_qpaDce&U0gv&KxlE3GC={^K0?*Bfdpn@U|u&5K@?D0DU-N}QX`)LrgH2^{A zEeMK=g`i!q@x&bn+ILhLdBhEZq#^g;Jb(H0X|bpnmtRm+SX44SJ(HJTI5sxEwzl@_ z)xh)T-5Hr#TU%Qdl~r8sI}T@Pcng&CS%> zT1rbxYfUYsth}<8Qb(z)r+`u4(A3miS65$G-_Y3D)X>maN-8fUm6hNKRaNBb>YCyb zd__f7O-(Jaw5*`8xUH?7SV|(5RpjOsRDzR{Yw!djgTWvWOUuhE@r2Tb#wJh+)M{*M z!r_THJfWFNrP1iEt!?$7dQ)>-TU&NcUQTX)3s`Dz@95~r&dtxt$)nL|*zDY_?A-Qt zS_uwMqk~`+6cuB$z}~`~yn@WE90sE!6PuHP%}&qAO3%R7)YiQl8JV1%tgCD2c-F~e zc76Exv8jnVH#axGupkzTOG@zHzI}^{iHVJkjf;yzp-^ZvIzB!=At50#F)=AADLFYg zB_$;_HTB7pCr_U~O-oC|U@+zyKlx9zfymR|iM|nSX=^_hNQ+bv*}O>F)07>3Q)2DEyMeV)gd+ z_VxAk_xHa7P8t|^{rWZV1Dnkr0-gX)8V2IOc?)a-jP(w18W{yHdH?{B%5D4by0mTKOQ1}TrcyUoA5-lw)0jkT(%PT7@ zpFe+IU0nq>USD6ANF*B@8(+SB+1%U&X5QZ3-r3pN-QE5A^()|imifzG2$HLIakTS{ zZ>g;1cShYneyY;rmD| zR)yt|qtlYfbpLSAY+%t=sK3{-q&v8`Nvgr>kx$6!$Qyph@r^1)f?Kxp$QhL9P zR`8nA{$Zju#&>M5lAirvSyu!je%i7qJ9W(-1umC!;e>`#0!Js^PZo96G)cCR>~E$O zu4m^@S4ecw)pAyBA>V^5!p6M}dJ=s!5X%(%JyWb0GXh;3VW|uA{f2jTZtB%6^tx-}ODGdcb-AGb1hdzaQC%zwUgQWyTV-#oUlvO%Iq#<#)s4Igu!V<$T+

*?EPk9lm`;XXd9~ zaIAjOWXqT++!j8H)Gtn)2#Tmw>rePaU4GqV$7JjK`E?Ya zQ26lEa&lcFg?({6H658CjBrHlgiN#1ie)ASuk*)SN@gF`AZ^e-);fbUQdp|6!vZ#$|3s%P@?xZ1_K-N1x3~BnKgytM!yw zTKBfey^nHJzQmo_pg`nL_MJv)H>Gr&>8>Gfc($h2;$f6&)sn!)%>+)MJKd5e?3nl7 zmJRk8XM3qQ&aP4`!^`y1!cD_KuF5c}1$SRdU7u%{gyA8}h6!6$Fo7ZH7f``n||U8_XLb`PWqSwpRo6k(j#;av4MfL8S7@ZREes6uMQsd3@<~VjixS$JSr%Eq}AH270sI zV7Yb=@j6EHgPEDxML)0Lit{IDnue`hd0wmr8f|OgKLg3|C`zbJXD~AE$AhUakp8w= z-zEivX%`1>nx2!=eLd3u%qExP#ky*$`P5Q_P zT@LRHS5)q;6pGnu;oM-*tk8Wkp0ZJHvwypVts=CJVEarEyt5d!;Iq4kzWM>IWR@_it}|tE->hi{|d`Xr8)>q+W*8w>O{qaRaF|_;X3L zbsO2IR`Tar^!o0@Wy`?a4usX>g-3J2QBg+|<^wQ7fyREjQ9gS+f~&~6>m3kah3E*^ zkFW2u-El8ot^|Dp?H=bOO`McjdS6dtzj7qfE~ ZLgvRUj{Gpa175q3%P($@6np=;{{!!q3-15` literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc74feaa2d8f82d6b8db260505e095ccff316a78 GIT binary patch literal 20568 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a6637cecd292b4e2e87f8edbe39047bb552f4b8 GIT binary patch literal 20663 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 I!1K}n14=WW!~g&Q literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81a238a8120e2e6dd390b419e9d6eedd6f97ab3d GIT binary patch literal 20603 zcmeIacT`l%@-VuGAtOo2SwKN)4$`wQ#6_5JbIvt7G)S9NuDbyar{UAxP}fy2+#lp29<&H$jV z5AXv3KnjpRjssAz1Ofj65Eg(4Uj_h22J_O$%0P_6^0N|tf^;UI4IwH6(xFRt~v@6nwOWj10OWy(R=8b~^F;SR=oT#iE z48{c$mlKtglN1L4Xb$A4-@`)y$RYU6KQIUSR~hUJmxv+IpE45veH;*uzs3PM{r7PY zKz{Ln2owC~P1%3M4$ubQphk|~hXaQzz%l#??9}xEg2PpS3J(EJ5jeWTVc;5YjFgm= zjPw{8*)duQatc~{>SM>K>6uQPpg(bfiS`&i{d^q(|C&Q6DJUqZC~2suXy~Y@sOWGR z72Q!2+W!rM!xsQ8DG&$*LLuA$0WAbd3ppGG2T6L^0#OE~B!b`*C@?NT0SEyh5itoV z894=L{C`$L00QW*N*Vw{2!Rq15)hFPlM+FXiG!82P{NbPVMMA%4kx&MBgKg65_2on zczEfJUpk6QpssvWCpnd5^5ye794*Q4;K|j~=aNmGG@A1;QjDL>CJ`G|*Isq|O?}nm zyYn#WX-Z4a^yZ`L*4~*db7%kSsrfap`)0SLwJcl$qSFd$+xq8rXaNEOP+CH~OeDla zl6VnL!j2Py68LhTAQFpAq{B(@()i;SabCyIs4Ge8CiHN$#QG^>oB$-JC7VBiLgXbGk-zP1g3~cr!>6|Lo;axb3=-fI4Dr_hoFdFaNe_r!$ z>LW4fidU0b(_VGL4>6@W zFFOR^IWf4&mayK`%Vs#}<62bp_U%|$a9>u!dR?#8=j~g9A*>^!4bjs97oS-z5w&4Z z#H)l4>XSDc6WZznNSDj(T=(j>hV!;I&K9+CO7Tuv9}l0j+w?jFO01XW+)J@6v%@Cu zk!3I6`G`)a-kxm{@!HGmKLorto$cH>-5>5*!bV@{f#l`YVn$_ZssYD!cw35ilXUcW zGkNbE0*4oIN zY|}UIAE(Km?r-F)6#IB!E-58%nLET{<(KZGWb(bElTpX-yX}rt&Qzff?+tk=?5a(+ z{$9byR-P3`r8W)~p|U68Nz!$4LAjLV^Y-_*sD%=u6N83^t`^uRH23B$78pHWDUME5 z)@deg(!4b9xEAa$%y8l&%y+5873$+k1>3JBv6?A>kFA9#wCxreifV7hI5PnfewP!9 z4=%MY)Dk<@P+XtDa4X!fvD>ZiEsz#x;`BK%B(OdFEESO!^MtZx18Oz7$>N73dIMF5({!(@+ zs(G(;+zGX}xKI?tsjzPyx=IY2nV{hMqVc8%%RS8PF<^u)Wr0kG?ndW9G z54uc@ZA$bL3xxAc6rCdP6`>4_W?Ek22V`hm;MQ70b!NP?o>pO-bn0H|@S*_yva|Q@X1g8l-cb&u(3nnozu*ESEa{K}(x`Zh1_A1*{*LJuc z4~?{TRqr-uS<@8H;ue$C=Dtg4)9FLtV?*@;dCT|G(8}sHmp!>&gX~QGQC9vP8f$&w z$8A0=m&U)QB?@)k>@D+VKalJ?Su0xI=#|-7rY=JkT6Rl(LJ654dTw!7Xnrg%t+J~O zd;bMuLvu%6Dftk1QnS86Y@%sKKdfgEU%t&U5`Kr-r7ozg_qlCkltaTI;M#O{8LeJa zI^Zs{9sNovX00+fs!rmuH2Iglh;iGtnkVN&MRdD9g)|jExbG+UWwHd?Wj?F^=-Sns z>2j?l$-d!F;%sCd!$6iN1B;#aZ+=m2DO>Tl+9F#n#I+ko-%VOKsj*Y9^mvmkf>KeP z{cGC-i}KN2S2l9nA*u0u~M42u)S~6 zHt~H@uS3pm_wCX^g$KIE#h7&T8Sx6p4ezyHQF@1v2NDGDz2!dviGt_v;r}}8(c0rEAvW6xuI~o{3}$Xa9Xiu>(X92 z$LF}10q27K(;CT$>;YSyXy-Pq1PZHIk%srBiY?S)Dr8kRl#UI|s?Vo0oB0X$!>432 zE{0#MYWqP}u+tPuy(B)I@X?c!wqeT@_#%Ql*yLv?=E=rFXqV{SDx zGTJP02-wi;z5mASS@^g*JMu?K%A9Pqjo&l&JPnI8AuJ^1D+KH=*XDEfSZq#*CmlDr zzb*Fo!wOj%X9T$R?KulLDxHfv2* zTRO=p7?h;X_b(Gw(U>0uNWLd_%8??Izaxw3zb`0D=@F;#&H)J=uxk}@P4JFP5Duq z)LKgqNs_18o`=9VW9os^qpiEcuE>TrMaG02B-%TGzV;fKAS zms*9nYTbA&xj@lEJIp_i!XFH^VO93XIOm>z5AQPn(jLKM=Cwt^nioqQt3t9CEvJOV6Qk8o4tG+ds z+`4RbE9qUZo^=<0TJO7vjwd5Q=nPe*ki`4_h?(yAQT=|4i$A)rhR47LkFzu=Yd6Vr z#8ir(abC1ywTVcrs~k4;pFIRDF?4pxa859 zASRgVcvHVKo+;E@_Q@h|PI=Kz$Afd5zdoujc>&(t@IGPu$ud?^ZtxJecnHMWhV-J{ z78M=$i(!Lt*6ki=^Yv6*k7e6?uM8VwwJ8^uL})%-x@O&1b)tV&lGiOr|Iu>? z9S)dB8+OW!>M_Eq_wpF}Mi<^Ok{<%vpAP{I^cz0)84AQ#WmWhrW)<6QoqX%Fv*P<~ zsjL;B{r+;)JH0(;cto0UxQu2*1(y!#)^d$q?8>Ou@Q)HddCRxHSrb9Y)j&iQE%E(mqh()D^#OAhsW!-sPT1Nnn&OvJt`T9=`hIkOC!HvLO6i6%Z+kyD*s zAzAiy>k1HIbn=9PQ8&Z$^w0pQcoa++3`ifI=nLphl7VJ3YgYQgtwp9 zuQKj!tfi)od+T^(5WnhhWjxNyg$wuA_fhk7L?S(LoT>4AP22);2J4UGDAj#1-oMy_GCQJv1I8|B z{ojB(%3J*}z#H=yaNf}q{kz7%1>^r4(D3p+_Zt9*`4?+7xQC0OqdOez|44zqG=uX) z0LD&STuw+oM-}7*4#X!dl=r{k)I9&4P7UQ`YUYj6kt6^K|0+Pk3XrCkBtd z5a_95{F|KI9|6Z8QRf^m4!9BEg}mT$0sYHpxH66yeB%vz9^rh%=3lxs1>GF~saq4c z=Mnw_3a(;#)Gf|>&=q`{=BM)k^6QPa>}h-*)e$u=SC05;b4ol8=X?poQ!@XCIq+P+ z;$bp;4rUPiOaUD;xJ3TT1ONn2yM@PU10v4OV2vl3gYFbCL4IO#(=&c!#PE14F#km( ziN^^2g~9XO1z`a20f58*n4t5x>i<}E`2VI3uL~S&0CZA8@es~&g>!oSOn96q9w5ZI zM({9BdfbR`Rwu+`j_7}`Cju3a9r*mzJCSohr!k89PO(Ax5p3lLwWvfBL+LhDgU1seYDHpH)~L74xSiO z2bX_PQNa;lJ47Hx2d!Lba}7aU0if^&i0=oOK*#ML$L=4;?jOhQAII(=$L=4;?jOhQAII(= z$L=4;?jOhQAII(=$L{}^9lJ-T!;|2t4*)$b;Q0@C0Hg*~L5B+xa0DGMT)+ju6)a=G z2aPZJfD|YG2MR7g9WViooLu;G>5-3z1iX9%-k^a1ho7m+Trn6QIS~o7a42%GVVk(Q+?*7-EhP0t^?lS4u5Q}FD1=F{ zfhj!L11{^tt*peQ5GWVu<>Q6GIB*4ed3uB2mK3@1%;mr`4lTmXg(tyyD01VkC2?KU zzrdxAL?O5&g++znqEez+FF*Gg1GR7?aWCIpj~6Bm;c73KPwxWV2~ zPR?@1=QMxz1wxA4KL-^M5Fi{NE{sIEh`?lJWpO;j#DqW!A#{*8#vxG18_n~J!#M;R zj&j3$o4IftK~Jh5Mv)to^k@iPKEK)iM_v7mP+$MQC-w5eDFDwFjnVK2d-?B-fW~<= zM2rz=q#p{7(C|liV|acw_xW`@?LV{lU5&TquSQPr-_$;!BM7e^C%6d06X6B&MuW64 zynH@#>L`Q*=vOuceagQK_1EWzf82+|@%~AV0Nv0CMQ+>$IU!M5AsEc`*9AENQShdm z=n<(tI1QXYfA#;480qBZ9Q3~-)z_EP@kV1Dyx|C)bBf%cP{M9*PI97BGNLe;w1lX% z7+8eCWF<8SU`TvZ^Z&S(P zomKisCs2pt++0p@IcFrw%K@AuZe9*92oZN5gbQxYf7sdqjptI%5JHPzY5QP@(_R z^bz^5TCnP*p-)R#FtEAuTC>)TgK0zqizYiD`<;N=V44ONnWS z!C|04y9ik{Gaz94gAr-9}WD`z#k3#(ZK(YH1OBa6X6a1X%zq- zEWs$2lRu+aRB(r6C_n=xfd2j70)P)}A^4r3U1j zT7V8vWI_TkEaP_~fe@3D0Yn6Zs_9o5e{fNf?#ENOi)QvBPl5p1w2!Oi2Qhk_SMEH5Cl#B^gw`|i9Xl4IF4hq+&8!_)@h>|I^5?Gu%8xw$&`jh zB6wP|AJ|Uc*SS@qB)8F|!Xw>z=hECZ(~^ziD%Dzd;9zkHN$GS|YGy=^cRv*XgAF+3 zB$s)IBvnW|6J%QZ&2A1AE-=Vl>L}mImi4mG8q^{@KV}iUkAS6O+Z}UF*>ACRCOEb% zR_G2sWB(yLmw%(oE_c7*)erIXtW<)_qr{`SjN`~2S%`dy|<#+J1`<)jQ}zaLPo zr4t5cbI7Nkd0EO8B+k5&Yb`U{t-hLmOzmX;lt*S?W46FD`4ZAj`P?_3!B(A0b~QiV zt4=gy)4?xB{ZC;jL>=YR9z6)m4zO2Hde-0ljfG)T!4S)&=*UVKFOWa!%GWn6I4yzY z%V${rWQ(m3_35)0KwX=eYYNTA!ppDDo)0gdU4mCXrzxSSwAd~yJOm5_#NP~W)2-5r zO@+%~#l<>0{g^%N_)$YMiruS2x|q93B@ve|o|>**og|IqtF$fTPPzFS1rpy z#)hMk88Kjl&JaKfApm2zfVl;4vHmN^MPI45kd#|7B|a>>-O4M#NJ-wQ=EKH!I&WH(&F{{$v==9J4uMR%7j@#0ArkP(*GGP1M3n$y1Q~11j=cBPz%KCZ8^27b)<_u$V zHr4L^zW1>SufHB z47ECFzgMiiXi0*JrQSzyN}dT>zdf?Ec@uVi3R&t%78;;O`D%(P!>nkQn(c2fg@V3E4K>|}G!}~Noy!Y3}qgi=;&+}#lWtCL*VXLxr}NClwiS&3b+0l)3cV=4#-mL-GK3q4eEkW<(Et( zHNFwY?nwzb34b0F46%Fa3UASMm1MtaZ^Id56Z;rD)F`{G=-|88aJycASY}gU4-#R| zJV3XB++-Ih8gF9vnnYeWomO6LBckc}`qH4zMzr4ZG08)K&L*G~n{769rq(8WoU~Jv zO4NnrniUY6O2*BreM=c&%#lsZ>*S*okm}U zv}aGBEpl=+xtn3?Q!BqStV3N<$?dk$1H;k6?6)qjiokX#le`as5mu-9T0_s8ijLYu zt1R@R5Zg~uc~fC!AA;FaO9mK*H6-JDii5r1xV^Pah1+OE#g|wM3%d3iv$2Ft4cefU zOPUa&D~0dJ%ibF_sceP>ds&-bp}sxDnu46xG3I(RFT#a|YSw?)?ra@&wp*dkEU5bi zlTxbt)H}2{G&r+(+p4ajyyAA>hjy5Y#!cI?Hc6?}^&*7(R|&HBqZh1}{6f5lxALuA z?{T;@5c6!NN{1Yazm{!SYW_{}F+YOMb!&t9IqExn*p1~(n9VVZtnukrv3#aa&toZv zN@K>Nu@v2(FA|Rp^9$^3>MgQHkM?5Xu*}h-CGYi`CRx*>fAmG?daWb z%Wv9{ICw?#Bb(~0DO-xN{#;cyJ}s&CR#+*eq?hp(^wsg$o--K^Y-8Z!N^cw?Ec-6R>zsymDK{C`!C?rq9B?yaP3CQ1>{vhAvaYt>0fdm!nK| zXx1~nrLU+yW-Yk?tQ%5FkLjafYg}K?SOB}+iQQ6>zB^`b&PjQ#IghQ;_jY!A=vzV2 z?k0|HUQ3Ca2W>Vr!dmN{2Q(g>h=Vq-wF4<<~6Z#M%GHgGINz#r6D?O`S|0?WSkHNitUS##cRYuTQAhd9=iy zSg|tdH_c}~;GSkdrD|}|V@O`vcfivo++)b@qO=s$Znoztg$}?NR34&D%I|H6ebd!EcWf|Aof;> z36?*5mYx->6>|18Cha^xwQE$2&=)n0z*V{Ku-O=+o{rQ9k~dr2X{Z)lO-sdem=jwKAW!< zZ)fVb17SMN|4=i44G!n-;7AQW`t8AKrip`xh;BxiwmTo9`>Oe-{k6q&#sG(ewM8vq z4^_VQzTb78E0h-~5X5q4S}HbA%NUuSE5E{c{4z4^P&r!HwFW2f_ zbmCHcQ?q1x7HN@p3z6n0Hm3QS9y^|-n8I5;vnR|(^;KdM&#R4uSekMDQ1vDmou`2- zu&z-RrL`OIv|qYL=a{bhN~h+SYNyT{7P0`?*~p0Oj~4GF*Dci2Wenl0Oeeo2e7o6m zaL2p(l@o;sir_{){6vgoIxxSVVo-e32uq*%)KxHN-$@2Ah4rr`p@Akd&WQA`aM+wA2Q*C;}g?=@nF1~2Ih+0=i0=QU&V%+{tVSd?YUsw!cmyVgBa zVC9z31DVO4Ph(C_hR^KWu21-$ypZ7T>_zu!lJ%^Jr;D#{FWVcR#p%C+mbjE%l> z6qbMWOvvf1lyI}xRBcpG@2O{2Y2GEwYyqKl>2FfCggVqNVKX~7*A+vD?#&*vmw!O< z$l#;ctNZ7Qegw0kG9W~>lj=4q7yQHPcC`jCKrecS1^ zhqM=`yk@WscQS~s6N+iOUrsT=4mYCEI)3Oe=C>n}QI`amrW3OyN(cxvn8*bx9|1jr zHAX{v?lU%zEb1c{3t|`vrC~kYUXo>v6LJ~g}YZtNmOMdC^$?A&_ zlS;ot$b7oiq3wQOnjTC2A&_#~VR@mfp+WM;N@)GsbE2f^hWFdE7M#w}+mGt1QqQ~| zUVSI&77`SMxPE2B+%mULE8u1>8mh%rV4!VvHF$CSdve_q*^oNgP`$uYwQbfCw;;f| zScxc&Fq+{dP7*i&>mtYcU=Q7b*q^ka`SQ<@Jxe_G>~?q2uwF1titm>nN?8-14QKmU zzEis*g|WelT5pDnuZj&nCVXaF5NY$`i{zJ{hN%Gh4u5YRXi{wbMq)(G2US4|K}|QO zGuiLVxC<)ux8hdA2HQ^?QluvIRAJ*EJUwN3k-ax1l8_^Ma0gi-f>3CP{^}|!;qYNe z((g)_)n`~XjM%!~$Bivw%KNLcbtFr#+LKPBX(MI{!lFl#h^sGMC`UJauY1Uz+&otF z43!curp=9&)LtmfT=TGeC1uVkE*bT7;}bKl^40sdJX$Og>C5EYJLeYDE(e^-cA}WC z^q}shfVxtyeDJTWmZqwb4KkPd{LZYX+Ary5NJ$+wX`J3?;Cm@DU|8e8f*tK0_~wMI zO6ARn5f0se^{;CRc1|Nxu=UH!>|GopC%s)_)_Sg(GAz*m za3kHLr2mSuaK|UoSKgtEp;=Z7#qRgkDynP`ka=5SujquaRZqffDOyN5~qsp^ME*^r`kJZiVjgj6YQgUKBTe?1E!f)Qxipc zPLo#ms@Mk;hC&h=N>R_o&=#AYVEg3y^%hQGE9S86h-DE;odv}Y?UWiMQ^PS0+T zSC=5dtGNG05vy0XCUS|H;_ir9Zjy@xUm3vV9>QwG8({dw#!lbv zBDr_v#wcW6(Xa{|mfCeYu!^kFvm1UauZC^5!@bLR zurDW1ztM|IUAN-B&&y9>=AM5)TQ7fP69_MKZ|-kOZCkWMzMdD+=pl1U4vZyIO6h?x-Yp+{ zAj(%>&d%fVEuZ0Q%19es%5iP2q^sYyIOJxoR!6mnk=>-9dfP4WwL(Nu8&*2-1ZJ$cWPd*y*VDD98+5TealD4YvDM5&jpJ~TeZee zKQ}sl84EvxsD$U=+quP`zpBpfFD$np%C zx%twCV0Jruu|%=wlpTGjGf$esDT?O(mkc@K&F@<;ZRpRdQ}dKu3Z6y^(*o2Tmb}^z z)_I}NSfbf))Mn`9nREmgo|n%YNc_RyzqPb5##|oTXi;AwJa%gTl&HT}KVKPvVF(?3 zU-wnvN32@Rh3h9IjN91sZLPoV{PgL?Q^}xPpQ^g}HCn>N9tbU-oy*Voaa%`W z=Gw!{Y?;NBZYqX}>%A!}?-JZo--THS7TMiNjDl*PU4O-=MK@et=IIjV+-&J!AivD^ zDSFe5PCyKM{q}AGKT;ntUgx<|{_thPOuW=Nl`)vQ>M_mj`ohRLU-nY^FUNH|n7R?u!Ib_xE;my>ykG8x6QV{mW%fG_ zWp8I~@2#Y5pI^>>A-|q~ZNdDCsC#7mu$R^HaKCxSL&0J&UizciU0)$X@y0!|H)q-E zOuu(E~nD_jnAV49g{Cm&_OBNfV1K}gy^6_nK<}3d4ErxDban!-<;&1f5 ztxZxIIs;`28JVg*hVK;a6cZ6&(Rz#d&zs168wXcQC)TdL2X zk=z`v7nONS+#ag=(XAs&~j+XQ1( z_q#MXCw)xRcke?!ES{>Yl481NRw}jjg-dzsl(5!mMfU)?7;CfYppz&2CNEC2>2OC# zz_X{ln9wqJ>ujUq1q+b!x#JFBX|+dKt`^-k{jptT(-6w#w#-Lcl}l%@!rvV2UPMxX zRWoABBptx8e(!9|ePeFzkn!v`*FmBrRa=FbT+-0!UAdyfo$*`}q+)gC@{i4xSQ6~Y zl4))8j6;UC2iBLA=)x0vpLsU}VY=)ag-eBqthXocSe-bZb)h|ihKPrfr!;FeSLq8T zA#wAw?S-5g^ z?Pf@V@~zgEt6};9er)GV4ubF1i<+;$5;o9C)$}=U@|K-P=yep_u^8eQKqoPL!R8RS z;9Bl=r(A7}OVNqzx-naXOm`VwSc6Ly>Qb@R@DhjdtjZZnK{wf{?)Bnq>bIq{DCFn& z>F>tJJ4g#!edVlE6cPKv26sCULy1rsJb()%MYz)Gi6N*mDU5cR|y^!5dIbP~1BJbv(_pD?s(w%=i= ztcG!~$0jAKx=V_y{c%GFJmFn?%rfaQdNQNQ7u4(*1GL=jhG(#FWlwgq$P+^y?i{iv z#k%>qFUKuDs-3ET+0pSnh)MS$@|lA62vSwmCKUO0Al`U*+g3O5v^nMbzVXQdn>#1^ zjkFh`x+{D%ZrJLu)%uq+Az?qJXzx|le|zVzJJ=xmAc;opi6rSkg-G|Kj@hbOOTkk6 zFYUVf&h(Ol4`>s2*zK&~?^iVqHLc&>j=LX8r|pz#c|$qM^tc{7eL$AXEC9Q4_Xdww ZM|Wx-ChPMeHuJeb@o@?8SC6n8f=gT0)RQd41PSZL@{+*u>SBa9KikA zHw!G^0mS<^0Dy<`q*S&?+QC>2oRBD_mlM*RRn=I6RnHa*N1$OqR0JX}D~gk^IuPLlBGHI^bMB_0+gfdZow4uFM?i-%7@NJLBm z8vpN&SO7N8Nh2kIg^PuQjf;&(fKP~rLn;O~QsLmTQA6;Q4Q*-IJ#LEP(?+M4sc>-8 z88zF9iF@AaQzhVvG5#{O0riqNl~EqTtrlxyul_0%B}w0JIt}|;al7Tc_spgSPh8fW z%15sUX1`@uwGPg0nK}4`#^+SG4b5*$X_`Cw-c87@X&+wLp#re6L1}R@G7;e8Nnk`^ zgHYpw5_quF;ECRhrbSE8Y}EHfjMHw)^Hz+iF&)%Pe1i)gEdT+x#H)T#h)jBWbyGe~EB329V-l#-suifp08h(oKz&D@zt>jr0k-!@*g;9}HF+KOcI0^fztX z__WS)S-swv>>*M;jFdtE-UowDTG=Q(9=p|bQp)ut0&^w)Zzp2DK%Yqhuv z_bPV6iP7oo-Cd8+ufUHDtbZ|El_uO9Fe5plv>ikEkXByq>Rlq98ZPbj$&OTM4=R$W zHS6xihOKhlA%72 zA^2%+m*jdqYMg(v7_rtKp*gu~h#V$QmXIW3CV4yQWhEi|_1>fsN95vjQ61U4no|?G zf^TR@Z@04!nDyWP%(Gm2kx{{fWorf?*Pp0mrDna6v9s`LDL7rma7c4$M{#q3r1GFs zi0)a8&Hg^!Vd$Kk?!M#EyY>l6#5JZ<@jUu&mG%5=hmjoQrC~yf^%lE|<7T_QqjiPC zZHwPWwj@GaN*f4d-e>wWEv}gW0c+5-_DCyw`)iXK)8@7}GgzN}7p!m0w`!xPuoqos zupO*B9sF$Od5P)g&u4n^M#&KJZi8?AV}Lb=$U#HfC28s+jaNH5eM*CC zE@3@&qQ*}?zb>^7{dD6zebK!V*#mmRp#g$E7S`K)%J1?R9kJ>h+snxsGYM+p(^TaP zfUHbXcFyq4k_Nn_;P%KV_?*cX-6pA+zyb;qGo`3=>XzX@=P*3MA?a@6FFaWUbh_1 zQdr64V8!a^cgOZy-5!>A1ljqWBS4~JP2CMv3?w=2D)cJ^vh_^l*YT_dkUx%>ZPyRN zTFn)@L86|k*D|4~dl+^EsCvdj`Ik~4Rr8k*(_*wF%HL^xVzijz7I= zq*@%FAnCYyak4%^J*@Ar%v*N3aV!nyde+HD^^P0a5fGC9VZP$9`W`ihvJ25Y*h|g@3kh=Vpu@YYtmod`!6RI* zf8;i%8=6_3AN9b~)2B`yYE&|dPcy??cyM+hqD3X)RM=ESfs&hp`lAYm4&17q_-N*- z2Gyj4?6kYLWbY0oi{$DS;qK$;)&wUH1~jx)Fts*UKjw5h-vI$MO#je04lOrH;hsX9u!;mAVnii6pa96HnNkL>bb|*h7U)tm2hP8^i#rDkTgMH29 zBS4NP5joJnHj-6mv&gmD{!H`ZkF?F0;G_Qe>$$e`2UnLLwB)U{IZ47Uejpl!qqx1uv+tT-Vsn#_Hlc9 zv1Lrf5jRkH#~wK_k6JHeqREw3cwkmHb;z*Z-!xO#n|=^ltSRR-sJva(L>ICZvK)Nz zbCxM;7AE%@I;6JTp11x5{!)-LWpdJHYN~5Dk+0CO)AuB|zCn{XoqcuV5)> z2d$B>_AO#(qUh;H{5fS8EEX(rCf2TAM-r2EcKV5a`b31ggX_a5F*P*LV${t{0bNZC zvADfmo&>`_J2kFuabvQ=?e3}23!NKEQrHGpT&kN@OU-dV&}cvNL7EK3)>4EoD&*`6 zEDg!O78zA`novqW7LS`t=~hPJLhnYT>6Urwj#^Go{a&X?57oF zhxOMEq2`HQHT#M6lbd50F*jOv; zfw>Boy~eL9#Ph@{ThM43MWE(`kdEB)TDo z#_3;8AII&OEZu)`V^8xcaei$WGKPacM$xxURW0V?Y+CDM{5#XyKDYeuK)U?C=u^hf zGiKw~X7%XDJmJjp!B%pC^?Kas>wL7_WZYN^{dSlTwz&Mrr0#35bkmRC&0q=lG{ZVw z*#sL{f@b*-kJc6Gk%&B{cNw8ICZ8>W%<12CFwb`u^nFXz_c;P)>4{Rd z9653(%ePw`N4*@OO`BYc#UfYlDaeNhIu|VUn2X3qzN>nr62%Qs#O{vby}8CB+On7c zyL>J^GVtw<;Ezv&C4A*cmbT;tGr9?D&fODU>D#LU8OMimlXIUXfh^PAvTx^^o>|ja zh@0?J^Oo)Ov6>Gc!=Cj!Z9}jXo!(?o_c(ZMFjrp+Ve@Ssn?B?K?s91>HovNYG$G%@ zDwpQv`>Df$7%onOBj9LoQ%YKkBgx!igt8*3aO@*B_Iqa?E8IEGx9S%PnMbwfu|2Rd zJNV^UaJLi+qe9h&c6yoykd3b&?otdO?s)`Qn~g|L#sry%bP)WgJ_2C(Yctx1$ttxD z*6~zx&4#L;5=MR?G0kk{5*=gabT=k~hd`ziD~Ei=BB%69DG0gZZ)@oh-4h(F`@utw zt53uWeJzZ)`)>8)CE0YQuSNUhgX`+kO7o~Iidzfo%PHy~WPIDZ+Hc48X+wC~bB~6) zmX3hwy0;PUOO}vJ7iyuvx^AD~B&UeD+@SBekR2P8GbSaQ+M9%l(`1F7ZZ!CQW14VN z-itcvT?v}G^=iecGXDZ?JVl*pN$iHfuhZJJiY8joz#BmzjQXzSr}VJ;MunEba4( z@pv%Li?(hs6Lkv{5QQek$R~#;z$yo`zvQF-O+I~h6dZ~00^6z4l&bD1#0gtaW;@Sc zfRUq@-Y-Da6QTMSfI$5PT(EQX`qgsL5#{p>P{URs!fk9D7Pc>VVEqVqRAq^Z2yiSaUuA_;;5@XN{Fo$C{|1zuz=ok2> zVU3}#$9MxzsM4k5VbRvZS;f>Tf8N%yPD+erxiM|z$JFRt@y1V^lVNaZZ-pO*^2{%o z8N+oG0~29#FvG&E6ws4_PQ)iB0I)E$TNtbsAnf1(wzz^h=zjnc)=x}&Qt~g1CGtaMV}bxY2(`= zy%F|a|FZ9(DD=?ir30WBt1A-Wh_0g(dQtxltDul>KVh^efRUrqNjnu=-WVcI}6`phA~0NQH5@g{KeM0&gb4TX>Ngge3!KX)9dx-pu&J_ZN!AhY#G zAvIwLn5QiYW)C6&6My%UGnM$57>z-QISJoU_Y22O501zMDN1M0YrF${u?oo6Vfw4*%j`1qA7~w$!ndUK{*KQ zVGg$5m;;f>2j+?T2XeC$^xw%z>>O2*u1L?{luLEYUq$m*1K0()h(w@uO@uZX=>alMFhg&ZpL+<)2>|k5f_OsUH0bU8;|=}e4gKQ{{o@V&;|=}e4gKQ{ z{o@V&;|=}e4gKQ{{o@V&|I8bTxn;3|w3p zfgdkS%^jqm`41GVfGS`N96N?EBOLog2*4LE;4=*@0DQw!?1VzO%L)r4yo7AguWE## zNH<|WTX$iIkccpFUeV9p7U}{+vD(2vkAOV;dVLc+E8Je5-CROXM9*Cn<^*%cL7&-=;xxw*T+P`0doZmtL~SwDGp40Bnqjz$Z!vtme4F7oV{w=b*~ zdIqejNKY86gpi0JR76sQRT3fu5fhh^k`iDAAM}U_i--zCLgma9BfL;D~(U#619 zICu1r_Mi^M*jeqNvJOa3H(PL#z};*eVZzStFh}&71*ZlItOfT14dnlG7Z}4le%4&! zteB-GYYRpH<{-}wMVk_4&;An)|0gB=$B7=Z^mT%P4F4PZ9+Pfj=7fqk%sf`2R=)e_cIc2=HGkU+`iH zhDxyg43$tqUy^YEN*rvQ-+$)^Fwqm(zY-2u!@&h}@U=fKI^p5tVG=$*0RbTa0X`8C zF)D~SCP3Mb6CMs2Gl7juM2wD@!Gukmw4mP&V4*`42noQL2^=tJ0vDXbaZhXz z0KjMqDry=+N>(;n2pv0-sLH9+;80lDcvxu32{7-Vu&{BcZ~-=IJbVZk+rUn9QsHLG5PNELcN~2DlVLzBpRYFDD|^cI^vm#IntAhiqcmO1%V}0mM;IhS z@}K8-1*ky=M~q@3)o28fNy1I@diXuqZ}^n(zn+?Zaks*_v^Aey#UjJ4Go_r}dUfBo zdbnZ#ASw)tcJPY6B*}}IPH84ng}ANxAb}^hqK6;%#zwDRds6RnVQl= z@&)|Sw_(TyN2+o`oA@6{*tLL`aDL6;E>qX(&!{-5xah?o{7Us#tvZ!uc(3Nf1G(T) zau*pFe?(>`IB6?AH<^nRAc&M?51kv$6d%iIbZE8d?F-NpU^(}+z3Oa}Y@}R`9OD|h zY?wbXy=o*Ov}>eT?ou980*g%K7+>!gJ(aLci<#4XtjX(9(M#M%fZ&(27X~Sn0~xC< zoRyz=#<`@F8oCD>pjsOrh|1WdByg=j4v;iMk0~u$3}8Y@Puy(ud2a7`^^(-8=n{4M z5)@d&PRHHqUMo(JZkKlc+R(A`e{-6S^cQ1JKf?8h?B;rLD5S5S%O{$``+;ygM>z%g2=XPj$ z6U6ImM)lTXnvGV$Gux|Nf>Q+tEv9>+g^ehR6oFWsH6~v@KIzzku}pR&qnmSl`}x6q ziS4i!8g)d-tu(b&4-K-dtAK)H7ASec8M5 z4&NQY%iJvVhU!K!jh_wPB184aoE{maA{#{QVlN7KiLO30&K}6Vc+E7w#hm_;5yeCJ zS2MRrI_0QQorUnF+)MPl?1WiUhPmoyb;QZosHaM&4DJ`y6;_T>Q4;fQer^oYYA{Ls zyrloYjUO@@|4cCK49!UDK=!_2^=$!7rOWzufrbhs@8=WJ)V6u56!BI;1QqoozwGU6 z?>3h)W&=aN@PGr3Z}FOoke&FZg?R($*GI;uQ>UAvv?8oa_$#hh##M}xuR#k-Pz)uX zO&F3FwDS<+)rt8R$JxKOHuCkiAi`-(6KpP3s?<-|TcsgHGiVqMqLh{6XX!Uc({@A{ zz2;ueKQd6u;?fCDey|l3uG#7$Uti;$O7#wIagkHvy~Yzmv*L#53jlf6E7DU*@|;>pWBQxGXRcZP@q@<{8Ew5R#9WBhm`Umzl&&+SaBb#tbW=@0C4 zQW}{95AMG(^EP7nYExodr6RA8Fm?o7(JaLcuknq4k~kBW-{YBYmXvj)H1EE?cRmGe z!&ly(E3LfrGw)L7wEFAbN9l@nPk3jWIMMRj^S!svRyDUsc^!1e^@ZZxns{Q|0`ZKi z^qs{sb57}R*2+Wg-BQ&n6&FwMw0;bDtjQMWdSq64jaHv)jlB}H$I(bLdt+8(0A5`)ta11p~(b|yHVfI-YXvO3Xashqjm%clYd$1?KqgE*!|La(X4(W zO5253l*9A)iI1;gd8j}Mla1=uldAeeRatQOrG@!S;9WYmUbge~Rn8N<6FHl)AMIwz z%M87EA23S<-jp47uf5#(BpcpZGnP6nt{ypbetBc=g9Ki?uk-x@lIj;-?!vsj8V!;9 zjUz?hn+c$^?Fk<*iyPu`p3yzc-qJX^8Zs@ICio#x)855u!Fc8Dg`8B5Thovz3!xn% z1;x)Jvelil5kmsKoZ7AK4zBw*hd5x=S(a=S`wY}eaPy+u69JznPWyS!%qy07hxYX) z`h05jN;^}|WbNCs6*0qK=ak0cI+n`c((2E_$nk@Wb<$9q6AvG|E-34=#xAw6Pz-^N zpG3axs{Cfebac^5n^5PZpjr0{qd8Hl$UQBU-LCLHu{j#j=C8`HxXfpxtR&TQZu{jL z(z^BJ4#!VR_J+tBY>?SPYv0y{i4L@lo7+9#XJj79mMyqBM|(4NHuyZJLhgddc^)GD z7*u$OM-@J~r7?WD+XXTbj;*p{?zYyJ{N@w)McEqG3(WE7ESGHcCTFj4Pac-6G054l z`YabFqhjl3-trv**0tF3!ql*{&b)%+I-h!~cC_z5?(6^5uXB6$L7n=zZ5QvEjptX6 zzlX8$6@hlqQ2SB>vGZbLY_)V1kOvP@1sUgwI4xP&b}S05)$ zPcn~w&!h9j*_76zTV3>Q+nsA??Ae(QZX1-GiOd#BC-sQ$A*7wct?o0IqdTWYE0?EU zpzgC_8%>z=CPwc$W%$B$%ejVt>lDXdDCqIGCp#Ziug`8z?x&efBu!@fa;w+*a(#Zg z>rc7)%9rI-Y-k{%S$n<(_uXM6$8t^d)_BKuiB^KMwm;iawrfKiUxIU;H$vUz_Ixdi z{e>->kNbcpUGbD7_HymX`H<9LSO#7$@i7@L4OV1H#L^l zlim|F@az4u5|!5X!}A%u^7FoeXXO|8;x}Y2h2dh=Bz(~GZn#=9QLwGtgD|FHU#rcO z4-ev(KYQCZ6ud4fuCU6g*VR=o*4hzW)uQ`o)j?Zi?P_?~YA>{LIrZ#2|6Ia3P+V|K&{4vQsRNu?!|C z<==l!n`%A+;u~1@W)B76a#agg7CQGWjK5bc=r45cdT2}t-IG^N+B^bI5$xqh2KU5% zFI&=epQa^sh@N$3ziHsb!?*RC&CMZ3>VY1TAx(rw#1f(!Mm^0F<9|7a?Ghu!=s-~4 zH2EnQKg7dOwP`(D%^Uf^X%Z_~T zfV{f9tK|ce2&zg?7S&8T>9wMmhGVL|DuJ_-L+hJ-6;D>(^RyDj5by9A_4f=}hSb7I zlZ851cbY!>bO#nM$IDr%GHtzJ{_vIn(ne=bXUxF?>405)V?1@$$Xu6Jeeo0gR-`IF z8EY+>&fIuJCtK#TqTu^Lul?`L0aTwLLEX=}XD7VwxRt{nyMH6; z@mV%vuhhBij5Qx!@N}1st=D2z+>RY(?# zI4Fhb=JtX)CRVfU8^@5OK0+E#-cZY+9>&NI@xjANWSFXQsmF>=VmUU@Mo$GppX?pEuWk>Y zqar6c4DJ}gC5R7i@~G>Ed{%=$V=beTrD1&5@rb;jQRp^&8ldpDT8SvDi^8LdgqL@ z%1TPlrMHcqn$apX`cYiMZkye2GDyS0`-YCs>~0=iJ2I5KDC%kpc@}fxzKqoO?UWqp z>kJ>ExB7W*iDQR9YkNxgaxMKdN5o}iHp?jM5+PfQzPzFb&erhgyxu(8*28Ak zgyoGF#rL1iCd)O?Rn_C1eR+$IoZfbpa(&pGK8vhz?UH?)l7C7s(dHHlDv zfwkfTOaF{_@)n0|*yrs_)Z~1Ky*U_lLw0lfX63Rx-_FML(3&CH;;{O{HL4UQjC8}Y zavgG*Kh&}o6;EGkx_EwQ?V7jL;%iYWQHIho@Ou%z zDCnCn6|<3@d1osK6~z1`TstG1e>A%7pi71nKk$R_YvCHff&k-#xvkb0(VoFRXC|;l zZ+Y!*jLFw3IP7lJxEH7DxA;Xopk8~j`A~p(zT5RaEBjELT6ve5bljYg#cVEf_0DG6 zBg82+%Id(N_>VOV=D9_9ow$+jaw$KqFft771>F#e)NHIk)J)wW^p0OPY8$2a8ch&- z*0RjCE9RnR6QQ@WscfFpQ+RKw?{y)+ww}hdKpxr;DN@!U51R|L*D~sSzTYFgja5L@ z&6`(}!XrCOA2|78JL-%9tNt=umkvQ&~IyE&V3~SPq1aF}iv!MQssnha}K_BmH!(D~4BZZAV*^G7A z;oT!`HF;Rzl5jz^()ErOnV}NVV)UD8UxW zY_*nuWyY&>-Rx$#W?R-+(-^^0sZsPy4EDjJU8;oljjvmMqO0*)-Jt6E{wcPYww0x{ z;Rq7$+EHZq?tLX}gZQH z5fT)27nxuX8XLJD!zoxCp%prNC)_zTb=kLsE;GoZOG1_VY4aV~P&!<{kTCh6x4gP# zSF@Yx_$bS zPeKE8MQ0N#)*iR*2$Yj_CtaG)3N2dcF}k#;?_&)q;2LCQHd=9Nl&=ld%Cacsv}>Z_ ze^}S?^+ADV1=ZuAv4t6~2ZFOZv@q&#P6Gx~hSBngO0jq2N|RoSi?8&`?uii3pA}~! zT7N1(66yJrpD}Kz$y8*3!!mp>jL)ROKR+kk=1r8<-o|rx`JA@-!zCO48vS-5I>A$C zFCmL;6yQl}+#eZg(tyEti?$vDAhC2#|0>VkNb2kRXyI2YW4FK_AfQV03IZk=9zmZg>U zlEjy!6yj|<*1p2gtTaZ8=F_le)pthw!W^7te9rZN!H?yy%$`)ehW?!I1q56SM9DS#b zsnk={@Xr(oftBrpYPS~8hT6!pa%VjXv{QN?nUF5&Kl7HB+Kcnq+|>IbFg`foeA}|* zAzqQN&Lf)#AB(O5?Y%DbR2gm8J?e@$vT>;iPaE&`#ojP{Y13BX7e6OFniN;4aiwc% zR8;g^CTX4BIy`2Uwe0k zm#5lta18QrZ(ea=udco%w2qj(8v0g5Ld%}b(0u1UCFJX>&-*1Wy@Y8Y8RJ_1jo1(V zB|7g0oCLEKQKU>E(c{9eEeV2RgThR#E#7>(wE^k8<7p4gZXhGvSA2N+^eSoE#zc7U zm1gUFh0BnVyW%|zx0yGR?nZ9xk<=fweTvg{&%(ngDwpY`^i2-*V4kTxZ`mu7DoBI4 z;~d`+(Bf8*WxkbG2sM&zRmo2L_H?DaSDG&R#)9Se4_OMc#jM=#W$BEs=vn*h+ZP25 z!`$jGi_!)5XkK7*E$$$5S9DIH^&39#f9i$-*0-y%1CF8mB&145OV$P z2l6is5N@SxlG9tdoSbuNcKvB<9)sJYzd4jby#Z zdORW5HRvU~tD4LF*a{(GuC;HwkyXn435jha+Wclu8y;NhV8Xko%67BpvwR4CP8L(r{p|DIXZ{ry-o!a>(k?cqx@ee|qxK`6iB+(&w77IcJ(M%@l8&+DVaPg(I`YFuS`t#R(uiUaft zbCT_4?jq#w%X!G>x_T9gA4x&Aq_-&ppj;9wFEuo&Pv zosNhPE1R6IEqS;P+Qeu(uB#9jiN5By7P!YJ*SWj}4Rue@3v@g9+S_Dc_Bg2YqgCuD zL)0F8{JwNQ8^i1S8FV`a=bkEm!@9s^k{$4n{8S*{E>Dj*=YVl#6r%+Blg0FMd6CP+ zorg)E6~eDR&!8G$d=?!~US6xL1G5>MSx_H6qu(nd6mogc*!#Kiw(#uiM~QU>AGiH* za(YtpyHLjKfo64%snSNAk2i=^V){wDo)|oI*0$ON7!1BGUR;6QYrof~2BG7W^5%o< zXEGMfd#@%^PQ0zhZ}DKwC!rD8fys#l>*@F1Ffn|jab3O^coJoJgB-PZQ=%e3tmL{? z;XxwR2lXs&4V(92oK;@SkM?qmvxXO&wN_!Zl~s1EiEKL0zlJ)jVmH|+T(y=9<7}9- WoO@Hwo9FP@v-V+HaTCwc=>GxF@sV%< literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5bb5812b1f1f191b5f35415ee784e1f206cf2ef GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cba36659e9bfedd92c82166e8ba18f18d7c2248a GIT binary patch literal 21603 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%0A{;VZxwk|GoX{! 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 IK)=WT2OfuG6951J literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7482a653daf1130d6dea4ba9a92259a8cf15c87a GIT binary patch literal 1150 zcmeH_F-`(e6h+^6Y={&PBZU=}F`+kc5tPKZ13H6^p@Xmhw<9GbE<<}0s3=f47yeED zB<=v-${Wq#=&@RX63=ee@lalIfsEBhb5 zC_QWKxW)+k?i;+XjI@1s?YN#1<@0}YeuZvETAp{6)sE{9@dLMR-X2&UQwsn9 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.png b/vue-light-bootstrap-dashboard-master/public/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8b7d072215eadc900d6e9e74e51971ea9895e7 GIT binary patch literal 2761 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b02aa64d97167ad649e496908b35f14c603d9249 GIT binary patch literal 9416 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 ROru=^AazZ3N)e9H{|11FNXq~K literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..f24d454a2ecb8851bb893192b64ee09386d30e24 GIT binary patch literal 4046 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 cK^5JQ0?3d{m_4Kdj*!1;003@kYpI!lw*K!+ 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�MrHbYR_buu=L>f*wO=Er8~{qfkYT+HoHag8)VqJoC-#@ zNT})4xRE%sP-B9?xmL5!2Y8VLa?yj@Y@r1C)6o~9GF9nWG!SI2VJ$>ejtUE%Qv&r_ zYLgZ0h3iIrw7{TyurC(g^$XT%PP5`FB3aFpP&fM-8!J#3I_ujG?;7(Xv5ni%BjYP4 z^+oydy=)_&bdxYJx`X%G5PFkUB%3h6RiOs^F?#ojsB%DbfhqzGhuv4)S1%vw@PDyE z3xWF{Y^0>+=Wg! z{>z@$rD6ej*V- z^$zKIOWOfdN4~7@ndhru01+3cxwD&_Muyja({*O;-5VnF(e$WDALNStE{1{F#ts+VR{o zSlQ*@U=Du8fgKW$lU~)O)b6FS?H1SSnKVIC=DOvbo8IUvM zVf+U4YxG%qLGd%ew7Jp8>@U`ew+A#Q=2oJHNH@_f!WadS20$KZEZ+BHAvU@FB zzRCYN5r+Z#g`C^hrH$yW7ABstwjvMM*CHGzY41bbo2zy$6E8DAOPn zUnHG?e7?u7pQ}Kqbu1jEd+=mcGea4aL6V4g(m*b7x}z|ijsjb3e|tf-3&^JK{=sWz z8sqIu9jy)#J}n}cXqtXmkb-NDVPcAKn=G9uX42zYvufu_OCr>xJ=oTNp8WA5wEqvM z{r~m8;7_C>U68iRr@|rd7UYhON#(-S_+Uf>s)hhPU{{exlxc&eD literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..cf10a5602e653bb126332934e2b7f34081c19a01 GIT binary patch literal 1491 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

aZW9cb|x>1jZDoAu$NpeWiVk@{x{! zmmBmDgx|qNN?LyIrl9$qmj{KjZ8zpa=4edK3FuFS$KFl}bWPoO*Ax#Z1c2#3JAN(O zYhi>`%H9fSnLkAq|5vs>+?U*bdfMc6TmDu+QqnN9xgfZsG25($^;v7U1nBl9Q^o*i z)&?UaYZ=~7XZa75xPKB1s~MB1m<*dN08pqiy*q!)_Kc|;EZs3&nNdMQ5#LFu+J z?*($vO)$hkMOVc16f-ep;K@_~&Y6t?0t9I0(lBkZBfic|u)3pK$Xv=A@jUQnB2sC` zbI)L9m;VNkWOao}2c3b4_u4+bg zuf-@d1$?asdD1~mORQ02#!&1Xm#41*xz}wETNqKb;kueQ*~OpcAXTpJFYUYcKoA&Z z8Ke=2Vh~cu_uTb&6AH75L!k8zo~&wRsDLs^3YkD2!~;%u6sFrzV2A5(FQ|3}+0-K- zWX)W2yq%?^)iKhyMGPB5*DnWBaLqAHLJ47;r5nvkeq3u_?J{Xaf_}6I+xpLwKS7NC z|KYU%zup)8i85jc)^Yt*I0W8;+zHUI3V7@o;3DUYasdq>DFK%im4J)F?;|B-<=}8R z>HESGa5)KyCnGII|E+YX&h4Y+xCRvyX@oGhhG4 j58+{W$RJv~NLLKlV4)8v^7hU(R-4l(}$teLl` literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..42af00963d81b8e39a30435c60ac482d1f8756e0 GIT binary patch literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>WRE8{w#)hawXn|-Xp4{E;v!=;4B^%-x&;Cm1 zP>^*#n_J!T^1SBMI!C4h-R53dN8`?ylD}d{L%(vZvUKT)~-CgWFQy3lt zIqW5#zOL*K8HL%o&D;R|TePl5?VWhq^wrj^qed%lKKkpp-FogeyEi+p zE?K8rW7E1fuEJ{5jaaAp0~aIt+keS?T)@vXM=*X}V#VGMCm1~v-+0wr{w3CJ-R8wG zS@XVpzqP-5Mf0H?y-zh=XVL>S6E;rKnDmrMQlmoKbK9p$evXN`oe{6g>lvi)-+#c) zb+Al&$zRqtWk1@VTt6MPmq9d7^!kmXZn8k{sFt`!l%ynwlArU1(iRB6fMfqu& zIjIUIl?AB^nFS@u3=9=>9)IHDC=AokIOTu(jOWuJ24-b$y<~1-Wnu5hBFw@HE)6D! wQ<#-EhbWxBaplC3Ge=~Ou%B-5Sm33{@Jd{;RG<|Mp00i_>zopr0DGh}-~a#s literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..46ca04dee251a4fa85a2891a145fbe20cc619d96 GIT binary patch literal 1271 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg new file mode 100644 index 0000000..4020b4d --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/mask.png b/vue-light-bootstrap-dashboard-master/public/img/mask.png new file mode 100644 index 0000000000000000000000000000000000000000..429360d5ce730f002b7413fdb94bcd261339b5ce GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIv!NkD8cyyD`Js^j(z$3Dlfq`2Xgc%uT&5-~K zDkOUZ`7$u%&R}3D?qgv1b%ueV3kcwML zKmLP({*A-*E2LeiU=QJ1RAk@^Je8B|IkoT7jCe!ITtr_Iw7T7H-mN|a>_~Iq6)cxmOxaCz}U%#Ui=s2K3N3I^^Y%vgEy)dEq$tzzSg&VCE z-hNH8D(cxBVu|TZ(-bt7gnr7EDXw`FXuQACea6q3EX)??i)Ss{wNCy>i$Lu4wXeJG zt5is|ZI6GmcmLtk$Y+utw&ikeyY?(*od6RG}N|3)b--Fx0`gf zzb;_}x%SBnuxnk_#RT?9>t``*iRooAcc!mZnAfW+aiSt1qKtFX^3=I|_~e*B|L0l2 zpZ(T=$M^C9X3f)^UR!0a4SyS4G4HvFZzGFS$8JvPnb8pYyQ0%A4xY&>OYj9^0NMc%^60)#}<5!Gm85<1XFVdQ&MBb@031k3nE(I) literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2192bdde5cb354dd4db5f1b7d55de774c3a062 GIT binary patch literal 3557 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7ad3d7b29dfee049a5ba7c00ac136129b686a74 GIT binary patch literal 225399 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

Uepg$-RLUmFFnDlS767gy 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

-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ξ%m!ph!01`=(F^zA51JRWn2nUfDeZ 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

-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�ya|L?U%C9=c+X>x!j@}(DSs3!zd;|&H0>*pb z(S<}yRuQi@&xZ#*csFkx8`Kc_34Fvo)htPC#*p}{8o*a9gKe+<1l8zQk64+# zid(kgs_}O3^_ArFZx~6Qg*h2q;igE7{Hhw2ja6>&QzXELXZ+drtqYT`Ilzh?og{?VeI~|P!v-h^wSho`v{OYOx!-6p?8m_l~?1vX%i~N zv(I$VLQ@S6n)z|>6#an3+(M7}d^8l(M<-)YBZ8=(V(y}rLl>+rV#Q^Z`|9@9_7~Q? z_Y$q+kF23-Y`*Z4H0G!w`EK$(bfAG6D@2T&tnCMjaEdbY9#ohRY-&rBA5`D>+f zI*@qm`tcSxmOMg;MEU;#GFea(EVIS^-HdOZJDSb8x{S*AnbK&rV*`dx+DuRRh>+sS zjj1oc}TuJ3im;u&?|obg<0Z;q&tJ@I3jukHfz+`qw)U3N%DNRTvQ2t<|SWA{*X8M(v_qoi8q2?mAftnZ5HwKWPIH!mr<^nS6Dy4Pkpl z!-Hg4+C=!LhoM2Z~ zFE9c?T5JzxaUA+$VJ|>jR#t-t7$h2dH*!VhXVX+-xS>32*hxeVqQ( zGLEYMdz`6NQkwi)&K};Px`8KAwvFoBKXGCvxygzyib@TO(vOO-$G18Y3+=lSOj zSu&?zQEp_a<$FNeD3=bdU2ictlz#xVtf==in5$HThNm|TOKbF^CwtQ0XoG3JB$y)~ zDPFR*-&e%Cd5d>tID1pB`BZ?-gHY*ThYG<1j>2Y1ZNrnaga3RP4|&_Omnd;X?ow1Q zN`poI<6)8?hJP`CD6FX@2W$m@0bkGZ0+5M1Aex@A785hixA$%AaUq?XDOWj$_;y17 zuhLgmUw*iVez3Vsi58EVV<=X_R%m&Zr1xMOgKH*(2PrmYoBmdkr`a!3`5zAYA5HPf zP#{1rh|;x&Qr;fJOp?Zf9M40K*cvOVW$wKneGy<H*LtBpvub&3F z9XblSBo9;Ao*@3(w?u-s*{JuPn;O8QlV4?eWn;Hom4#_`&A$9q^qF;fL{bD~gV+<_a0Pf{mQH<+i zLo+6KJ|`Uzp+$jncC;U*w~+(Q&vAd^KuQFsCacT;oinVjrd*Fi<*)g-A5Q*q2wxHG zc_3%;rAediiHaAEGf28jmY;}1FzrG569BFlEZpFS->0DXS z@5UlbeV*}bSE*Em5I>Ow>Pp0Sm9ayh_GAA(Z+uWs@fxKfdWe)%5Uumt%~+*anVVgS zbV#?tSDGhwifP~;{fFwVO$#E7Ad8WM?a5FqBevBU(AW{|;!v^7rV@yrrT1Z+Naory zk$ut!D)&s%EB66?y~g>tZ^0-GogkNuah8@^Ruj)&c<#7~C&g*)MO>Bhi zIHgha36zwjUwX0788Fg2OG5m_Q~S4E7>9+xV2h;u;U}qdANns`*#vRGW?7A0XHcg+ zgL*3691Tego?4SwFtoeSlpM-Xg!#7j+TX3$zl;5yYL`6XqK~cGS1f=jjzwY#S5a?! z#$5Svl0QoVy*ykQ$#xM(4MsxG5l67WF*bq+SC1w`1o;~SqQlEKC@lPNjl*7%-=Q-5 zp<1SguMmS8{R5cD%;suyU%FAC7|kd7*0nQaa+$!Oqtzo?061bphgVD3PkQ$}@-cWsJUZfS%-(nR{H!WrwP1r^Tg1-O1^HY11rg5)Oq2MddTaz=mj8~jCs12@PA{mQDJm|_v|9IVjrmz@0B z=jIs?-0hs`f-hWbtySh*2_c7G)}1W~OvKN-fA=Rezu7dopz!cjQ7wyM3iTb};|;6NY0xIrf^^^490r@&d=)xVVF5`7YG6n<&k!eS4K&UyUw6`w(Ey+*|hH zzD!L)y|{UmN&BeBO8bTdd1e0qek)3NnqsFqoP0Tcyiogx90BoD>c&_#uZ}qTv6nmy z>E(|P91e8HmIt5E2i9@riejEP&z3m*Fns=w7_J`Ac-!FIE!a~;$Qp;pkx_}SJ3j1N zN^0NJu8Cy!Bl7p*pza$fY=|@r-^*_`ah3u#xG|dg>S}3&(1;{QfjRz@g7Of8wCZuG z#;IFaP-nBYIZ8&Uj{$LP^blG@$c5h6;nzO#Lb;tIXk=nzZILj$ZsM zEmcwQs2{GFJz`Bw6-eMba7R?ul>#AOtnk5NwLCTaP4%3H712u4qz25B?8JRkG$w$P znWuu|*1ACWI;TnxcRW%vuBX&gX-FLW9o)u>;Q%H*e$=0rS#BNlz*aOB@^8_SK|-fortJB47_Lv+I-I2*clQm$w_0Qf--WZb8a252DEw`PbXagN7b;bt+m~mgzj;ykZ48%w>ufGCGBnKDa(R`k6WKl#1|UkLeP#!FV~GszytOdkGlZGojrMgMy5CetN4X$@p`B^QxdOh z_S(XRqAUH{T`GTQLl$TJc#_`dx$Yr?N{L~xA1Mx#_CSx;eXPe1EQGtrYb2~mW+#ax z=6(3D3?645tPm(`z+!}CJa80b0LEDZk5Du?_Ggv_1#+f5jt+SCV?3#lz!>5UIp9=O z40)0&Z~(<=jui37zm7O&4hPZW^m$|1!|3p)J-G7l{=?f|TSs*Sf{zTU8Av`y5?yxH z$Mjp%QZ1Nkw`1($xC45!ki-oV?kc~FG?~Cad$sn7E77H zA9S4{{{VTxTX>Alcm)(6SuM|A8BA6BDopD7RF+jER^1$)siVis8L(3JRr#yJqhCRHwV5t=}7#?^Zuj%&v9604)r1<{;V!j_iuRISSj}BR5jeLHFhT#VW8hba_hIe#n4MIZ&Sf zIN_+0OQ)4It^uONyeUmh?8^bJXA#HDIn4V2&k@IKY}W>ZNu?J*W_Vpo9lS$^jy3Z< zajHoS@67?O8DW4$7Xu+2K*2KH8JdQXgIs9&VWOW6M!#-9tai=v-6DPl?X^z2E^Q{K zt{aG3H6w?C<%^B;wO}SMRF~UA3Y6wrA& zm)D8|#}%jd;II^?L}P_8|}Hsdj=a+Z9NWDs8L_jfYi{m zsUy?={2gsq`-{ix#Ui!PtCqL@bi)RhNBp$rPqPD5THE&W6u{EDYBDsS!D*bg0uelY zxL~Rj_%W%*gQ`rZ2QR2#hG7sHr~;=xSnB%xHFKx43*Wz%Td>&sw%JF`LUXj-qg>24 zag3NAM~LKcF2%UQJ74n~Yft`bw5}eE+Hx~mF{f5Cd@~&JF7w;arM~bg*ETCfj^~*x z$zSvwOK))-Tgwv_nkNJ@u*iZA3Xxn?aON>eXI!v((*Wtm4`w(}_+pgzpDYC;oQn)( zwWkbI#}p%$UhE12eVF)Zfx|3NV0q*F@y7!%r}h0AaQbPF91OmWIP&tvezAk&ihXz= zuN?f&J(#aQ9Ct6wqPez(XSOGZl^kg!&j1tATGX%=Z}(s+b14+1eMY!ujTSJ~sc)@;tGrSEPW^ zO=wL#uxKeA4yhZ`F+(|&^H{Ub+mFM7l{IH`T(AzYS{2jf^|&jZf`(_UB{LBOw$c*v8URlqgR?F%rkVw^iHO$k`!vQTpaw}HM3fDXZ zYk~+h&@u#ja0G=&T*-5m0;ok$G9Z!;6<*<_r^K-eQ^!0a!wRS%dfU{;-f&Y{DaT7> zKD-2qFaXHt;q~Hy^X8S|&lJnToct?X2e#BSA6tyT@D;)=^3_MFoRUGODg*uaYhBSJ zmDCe&cm*YmzR5$xP~yX|e>qLg@%eo2E&F@D-m=|TC1|U0#ifW2XVku97F&&t{1>p@ zz$V!Hj?I=-F}SMwmnTEaa>Uj*@cNfH*k+O^Cylv-f;5yq2ZmS-7PaGnm_AspocwS= z;4lR^n&4$XF~>UQF~g5MQAZva8i>p5z@lm+nZU2rjx_xz9L_joIOC2p8Q>9-!1_3S z2RdT3$Lh-hygq~UpA1*^;+W<#!C*q5_@rV2k9o@yTz3a?+dj z%S%^|2|wd|7LZg;J&;_6Oijsd!rqeIMO#|Ar93d!)3#QRP( zI|U<&8S(SOw9ipOLIcO&h3m+w(&mUWBirGHhR}m>$I<|=*W-n0PQ4&h@u}toFs3m= z25L_nO>(X1QVS;&pBiBVXmqzAbFMV>*f^yXxDb2}G`a<0$3F}eh7%)`U0kVvbT3r@ z0GCc&Fd<2UB9O*9`YJh5a<9J%E%lll*suybKvk#dI7D&-lT)bWpM^0l-Mv`HJa-G} zc>th3Dq55{Www@1>inp^oVD+5I}%{jbCS`xMB|wFTb_C1-+S%-!8dKHcyV^Weeaav=6VamBv86Y0h zo+x>E3{=;Z1~~;7pc;-S7Jzc63}yhub^TZ*l4-{SO8fD`l)6ZwLXUaGn}20l zPu)9+s;k?nc=dng5D;hKs|=CdN7@@?hJj=CP8Y*d3J>8?guU*4-tT?AbE;Rlk(#H% ztVzQ>R%p){{0J6;z7;r?1-y2ou>c&#oI%8`Dx))d1Jn#oE z)q$6@83W~yQ3E_@nZ*WPbig&?iVv?I&kSeF70c)+!x?eMhBH3QPy)<(4Dlq}zU^(d z#}FmNjtc-hK;iGECbZfv8@e|oBqTOtt?C>rpoAXx_hM^)*xHk|Hn}|_>S{EaPdZUh z8hIQp;op7Bd%xTq$~>&mgW#)@f$SI%ZT2x*#y^=Y0cQ5M90iDc#P#9<(mcipd8kop zfjHNWcv&15r9(AqL+m)vj6o)cEV%gK3h5_^<~(VN8-W`s_{pmg>=1SAfS-NQwdQsN>{L5CsxS?LZD*?6DlPv}i}doC5o} zoG5vjB8xJ$rEB`I1W(h2KnYRH$YEi!R(2m7oa%hfEOqY~O)83MucUhh3dI6hTTlZ$ zhJvGzUMB$j)Vg?ea;-me!vW{KX{N|DPe|hpn+Ssnlv!fB~D*zpQ{NJmcrmj z0-&C`2!eM;n`8id#~7o@|~6mpo}AwEJE-pj^ia;8fAL z<%$*~*@_X7Z;eKy)@n68bPBiV#MaR6gMGh@dTlL#6^nQjjGBKF3`uF& zow#;u7p*Sm&V$E7QGdkEkDKql?7h8N8&g=u#6~&LAfkWa!i#;jHk4=AajlQM)|go0 zimY?+p!309I`wi~!1wdRb=gB2Xoj`HD!>{YAb)l$7OKL8Hy=Jc@U>oyMui=-C)_YV z{Ars#37c2l!x6;{D{3aKSe;M8x!|?w7ZR_+82Iz13&MpV`zQelY3GRKxm{USg1+pq zG|>@76n}Uappk@coSr^>YlW5KjucT*B$>CjK6obHGbyf9H>C%d!HzI)+>#4)J@%+{wJE~{(f zs+nr`f4>pNCx+Cw#?=Y|uMU&|v9IkmDRKCu5bUboE-HDEQs?U!6Qq4L4mzDBp(-<{ zQL1_P;qEP#ZAH3rF;ym|9MJOvcIt5UVpgGad$%T>bdbZDkdT#%nWaX&jN~ zkQh~(;zo$ms`ALHE95`jjZw%gw-|tX9nKKiqmX7l6Vt%wmke3{S^j>@CEm`gEp`vg zhWt>8@T^;d3WiE$)H#p0QJx2Kc6f^B3z)^kmKMw%9yc0<)}=`dq-Ugiv6$zdA~BK0 zTBpYuV}(5MH5!4#84Bl@JXW+7#(DFuG8}m0Jh58v!2KBVz{@`zdwg-@%9x?S9C6`+ zJ>~k1nX#t)=T_pS}JkLB8o@3K`0SrSx9spAgj6Hw${gFNfU zEF{;OjBw_wz*oc10aTO-G^iObmKrEyWOI`^0KGZTu*==8AJB8$c8tJluYR*S0{{Vg#D`>i z`i*D@fEYz+%Oci-DK%zznvA{m#7xo25pP^gGX+-gp*~&%6Kwmntam}snjqBivB(h3 zn5UL4_I>6F`>*n1S-?n^LnZFltmh@MW0HfJi26_2AmZD;zb`jiO~~#k)Q(Gb3k}nK zq;<%}I`AsMXU2yT+uTCXPYV>D839&S96<+x!1dCchB$x^JQ@;wh5@Ar;!pcAQ9_04fLgw~TO2xWdDT+TL3kHz;f?=obj^>+V+pb9sXJ+OBL&=yEA@{ZxeZo<> zTzpbZDK0C!@7}Cc}aZ=Tw zq2o_H1JrktzN40YKwz!S#+9WRS+n}M;a!305%4JW0tQ5!F;Zhh$yEh^#C-A5u(j#b z)2UjD`JeaU9`bg%W1GiboJf2L;(fyj2~~+y>URSnXDe%o?ZaqUHuw|raIFq_~8P%MRhemDqB3MUS4=!ysHola|2UTpF9ZGp;S;4 zlQE~33PT+n8U<0PpK!v>y4>`TwPUhIEjxP=cwu8m2Hg;@R1a{#d-SKj1udZrPDBT* zQ^n*o`mj3pNgA5zw}@x{BSL+{20JK4j1p$|GL0p@iakf)fcHS$H9Zr|bjF?}AjXKH z7gr8FGijw4_DLCgh7n_q7-R!F4y4D-@o%hwfsxiuy&C@j7f9zy)7@N5M3Y_HIqDrc z3WC`KsfhxZjbz;7w+yGcTHR&VbES1q5Dr*goQ>9G0aa8- zT=)$&C)tfuB!Vl|Bx>^bOL6vKC}N20+L8q%5IO3la>0%UVCp~;P%#FawDb4k87|S< zM5d{3rWFUkB69uXir84JHttASmN0?HOd}?rQw@AKj+Tlve8!w@O;wV5Ex$i&9 zkuKxgSJH;=j>Ngvws$DGmO|9iARh~$By*_C1AOh9(YAMP+ZxBZ?KeOr<*bzcRor}C zE0Rj0pQv1I+l8xI-9eK?Lh0xqF(<#wf*E5>zDd$TJYN_7jJ&{J+?4dxG>a5Z!1Y3E(|) ztqA?t{rHu)9qGGP##-sNwJapkd39Q>GW)u4+m88tCh2%vRMXu#XJT`yEJ;6J5SEQO4=1hoh-tY<60jNEGt~zMwG~)KNBAx90mkEbE#p&3W70FS~%lg zW6KnZ*_{Zkw#)SM!l?;v;p%Bz)ZporjW`qp8hNq7SnW${6fH`#Hxa1uKVAzv2&0cC zP-&k7LB|S_5a`@wCm;uxjw{p>JXBciq&ienDv&GuqL2oH+CNODz9oTbpCO38ZAH6CNiT9KD<~E8i2-6yh+Gzi(fWp(Z|__p0&~fy zHTMO1O^=Gc4FZTv<{ zW3D@;ty&q9x>;OgRfP^MyASg=2){4CHSC8%8wunP!*?Y!dkLh->N%KP)P0>?aPmZ- z)ofIfE^WasqxRzXhq|K_BBf0T@FT>19C+}?dpi{*K{D1vVk!5Ipo8Ann$NUs=kDFXeKEXCt}sVFqiK)o4}%Wc2Wo9BNROm7NUD4t zz*YVf7&rabzg+hY=JaU{(!1&MEaac73Y%WkkUD^|xIt6mYn}s4=?McczNX8M4tT1- zByKG|!N^yI6k%0nG9R+hic>u32lwOg#UexK4)twE49OCDfD0c1QJ*T;0IX3)3HTO= zh~iHi0V6cB6GD-J$IP54msBhEDOafXVN91I1X3$65^6KUDyvS)-j}XszxMFLh(L@m zpsrr}49*dzAtibWk|^FjkZbkhL~E?2MzyYyPapg69#;Ur*ib45iT3+&NXV(JO&N!V zSW_gc8?7j{r$bJ$R8{ReK1k9ymD2VyoCiYu{_T!07}IYR;TwyL*8)I zvxRF$X>QocMR_c1h!TBQvdNMHL`aL}8sp`jZmW#`LdA6z@*#YA)ZrwS*x6Yq_+Cmo z)KCHw^;a68w{0YiO(i3U4nPK=1M4`9-dsZNt5Xa>lk8DKee}Y|AzNsoG#2ZsNnH8I z5vi~3Fc^6HQCQod&PlZE@}w#0UwuwBC>I1|mv=le`>RjXFjf?j?PSPT(5vhmP9htO zge?gc@sX&X4I-!O!YbROaS}B~Gj>0u*WHe<^n0I@;mfP-3C5oMODKPuY=YcOfeC8V z=_)8kzYikF;uU6T(GHxsa2&jczX$-4>eWM9s3d$$%)+$x;5fN09*`uF0V>30~BG!zrB!m+{6=I@~uK?a#JoDR{o{pq z4S0d{wDLVu_)%yw^T$ph91!Xy$QoBq3YH;OzT=LQp|szi0ioStQVOulYLMv$htCo1 zmseK*0GmCJWV&tk{lVn8ytjpN(-q==I)FF_4x65-HD!A}Y(Q2U8L- z41`Un)RsPZ9V4H&03#I$Xs6OOSC^2>1UQXbR%%AFeWc-3$V%3%003u}RpU$(5iuY& zk1Wr%vi$=T5)A4PgH|Wc#{?4L)qxED@3JT`T5@HPPZk9a#Koy z?c;+s;kXDjDA8=S48-NDs-tYw3k$UW_fus){u*1D+k~)5btj?gAmEUS}^nIF2`!DW$$ySdZdw z{{XuP1;SVc_|_B!+y37C0+5*`_*Bj)!kp9`{q(?+;{7a5Gm*h04ncy&3hOc)! zh?6c!sMPu8kCofu*5PVofEG%4mdJf)0k>V%Q5b$Ly`crk@YPCZ$1@TiLss0tgxjo=N)KnT|(BCcv2_sc?W@*ZvSZN+LS)C{m*IRhz0V)abc?t5u z#U-kAB158@Kqk4C(h@ZTkX0wo8t+{L5V~U;ivj!2bIb05gDthA-CR48l7tGYP9CWP zP0tt7^cA+Lof7u|;WZMr*ys*NP0&Xu48h8fdclC?}lWoS?j8q`9 zTHNO%h1Ls+RRI0wZ|=gAHT0=UuxaITLC93OrWNi3&c>gHGY7`6g!wIwC6#^&83Uiv zGQo+_V@P-*Y60XF4=e!`EKrf@%~qeZYAf~OB8im{nm5aeC_Xg*0B#F_5Vm@o*CTn? zfFA4?nZa^H4Q8Z+&VvCh+CNGZF|N#C$Q+wK0PE8Dk-uoU^a$#+ajb2jZ2+kjKKUpVTp3 z#`sy=ih>~nRR`@hWc#rkmbOyexv6W*h6tg4@n$t6*@7m%b86)Dt*np*JS$lmh&{M( zO|%jz1E{3kTs1sh%@_Da1hK#xH3pL2GX?hP00YAy1|p6*ro0NLsT4$8+y4NMGHKv5 z#+a9;$Kyy4mn8Bmb04D`BDjvhfvv$hOqA!X&Z08JtRkCqbRaykoly@0Druj$-H73y z@WTvs1{+|pN6+oh48LSo5-fI=2BBF%F2nYua$oe~N3oAe8ip!q>F4SsSL?>P<}x53 zh`?%8@-iAA{dfxt861GDV^Z}#Za^QP;0q#QCcQ+6876aFhN@-m82Q=yTU<;kw^yuQ zW9(iz`>-R~dwTb~ZnYoAburl`PGy+UGV>=9+;>jt4%&bXJ6_%dg%|GYqNw)+gqq7{ zihI=IxL$wMP5dS57x+NNe(#_sQc{-c0P0Y(*M^7?X%+Y5RnuHRvi|@sCLyI@J|c)K zKx@kqJa(Th#k`_8e01*I{Z`x<89vp@l zVzw5J%u6u%+Pp@hEA?Qsg{6`5qg2R!mCl~*D#BJA=|ZgS<&dBr^MfVz<3gZSx{d(S zDPKz0^qdt1r9yw2K~x@oKKw1cstZ_9P-y_WQ-RBlG`~>JMFm?ro*Xj5nd)Ok((G7~ z!ytKA3k(tUwS%P;fkEO);ameG0u<9#Kx@yDG~?oMZQ_XDOG>aJp?$5ueOL=T=o-Js zkJLdwvbFsrVzI+lCXaI|QWboE?OZfS%xgerlC(U?UoUPH5ve34iS&w|8DOtjR8vu6 zc-MeXGr&)nRn%#$)?XS$nKLx4!vF--ENB1?(P01w1NQ1T8m2)?Br(lCO` zB(<|rbzGCHhZ24m*WS!7`kxPAa2AJ&a;$}Wdv9AwnX&zWc-FIK~#hQO2)-sIruM-*yaQnv* zU2aJ~a^J^IHyexVh!OW-T1GwK;bDd}f*A5hVo->qz$l;?rvZwATxY~^`VtT*SXbq? z`WdTFPNr})fJSD6%M%G~`qDVmbVy{G$>1JSQ%@2;yatlv`eU;moJ}5`RN^YlsM9VS za5c{@(Qg{)q0Et9UeSSWmT|HcqazRvM>0(mVcO$zh$4^z#HFj9G=~(`?yd@1L2wE+ zRNT0RI+2|R6H0T$v0LsdB-2#Q9jywft!UCX3tu2GjV-`w87Lg3#DPM;DpZ?BFh5X&o%OmL^GQQ`?8k@aDZO>GHU=#~Ef5M^E@ z)K|=mD(P$4V+Gxl`FUh&;Z$L*(%?ppMu;u6fWA7L{`><1%PkZGG=!4AS^43nxORCe zHO7LiPDGMvo)IEeQUL3gI)KkU9CGkDGs7-U0_kBhR8REQCc0pU_}0D0iX zu|~$f8FI|t$m0y=z6O|YpPnlSph_d%X$FUYNEaf1c;Y6GA$GBfweI5DVPE{Xsim{> z_us~B%0g`YfDI%Q9OrH#Rt}K&8B8mU2h1H<#iwP9)VZf z20FG@?L0~GIuNm^k5b}KNcU>OeBIQSEhql~m$1~45Pr$HaL*^1Rj0ECI959dKtF?P z{K+@~7?RQv`^-I<4Hb+%IOx(#I9JSY%OxK2aU8@mK=})qJurdBiqAzp#Z!SZkn(CL zsT#8eG^eBwQT+o1T3NhkO&VEh6F&&hf1&s$c`Gre4+`QtyFHFebYWlW+rw!lzi2F~TiK>Reg)3|0Dm^|a@5xZMWBFFku@?f z{vbTCw%cWmzTX0hbf7?=T?S{{jz2-mBZ_jSSk?j2z{ogP+l#%<-+qQYvcmdpzH6-ntv8`WM_ zRUhrgqSfY&g=AWYl}jEh%~DD8&kGr>Kmt|>2c%S*Ya=$xJ|h6z#nqNN4y5g+61+)j zfIhrDm-lIR(>kPv5vDr$GY|zFE9D#9GKGJFBg$4|%N}Sg&Bn$+& zl%ixLMKuaMGQo{iQfOAJ#0=?5d{h9}#|mfv0IES%2ndck`MUvM;Zuf}s?8hKgGQwz z2BM4io8LoT8I4O3k51*%0nfW)U#A%Sb1V?+KSjv*=vi3w0c^Ezl2zF1b0?nY%Kk3tSK$X7G& z7}W)w*Sd{bMyzoXMJj4VXfSP|y;y?^wY7|Dg}DU|c+<#YFT*iTr%{qnttny57X*$x zmjsC0uP_Df<_#--Y(WQ|Dx=E)!DlAm(a?O%t`Y@dkUbO{So>>;TXNjS-dGZ;ZUAz} zn69@T;ex3Y-zbmxrd8G_VO+|F{{ZT7?83&jeOq{(X;UarrkPSSP>cF-Vn*pPZ6eCn ztmQ}E05cl?(ZEDSfs}&KAvY6y^m-Tgo85sCj^66|zs{afa`BPiDbiozQb&#!YnkJY zGNlq%YLKIqN&OWVFBUK@JZppH&j-r`E*vnZ zideCts05NuKmaiuw>Imt+BSV_(@6+C#4A?%>4e<7n)PoMH$;1z`2-fB+|gG+AR3+k zlYpCjjlA0|;i5K=ZP8i`h%q`T9!8#H8>eypP=~zPR^m(T`?78Uj2Rf7y!MhXsyQoH zsG;J+J$QT0h0pqlC0j$={S))T;gy(1VB=p+LsvyTTB)7_+FPUx8kJ2&4uCk7i9IXt zIFuM>zL=VI-GanC$@Gk?=VNgxkx&T6nB!XIN2ue@fO~MlNsRHteQ~WB0Rxc~ zKz_V_3#GI&W>6?6#-zB+`GJCw1w~OoaWiUV)tB4ISIA+-%&Jyna?2e! zY}`oTp)N@@uNrb0bHIAZ9%LlZ4I@0fMqYLIV971iQMmOTH=oCx$#gbQ|o<#rv2O5w``mwI&OL!xVs}x1G$)6nxfSjx1G1dH1;07+lM5eqeTCvZW zIEqBH2xb5VRH&f)THn%0@~#QEk~sn}t4QRi9txwnV8k6JOYe5C^9;bdRE0(jzd!p1KRZRI8KbV`*yRX0X}hTq2sO!vyo0z41BT)fYz3742*T(T(K>ef|Ec`nK&(L zZ6(4gic0Ks3XTDqfotS38M@UsMCEFuOk*#!h)cG7*}%k?D*`q^2-%k274jhoE%lr< zO?HvQ=7d6e5Pp&gr|gR3@;eeunQ~(un0C@p|1`mcQL+!`+;ahIn zWm{&a{dLFS!aVgiA8=NX$jKw^*BWHn>%0~-f(eqUVA*X^Ck9nNmomQoV= zU=3J0pcbLkr~_Y8uMts+wyVaIY2Pe}j{g8_y#gzUB;iREoW({=wNuF82_lN(14Hv0<=(cjs#Q+a>0@4 zj>5V8WR3-SpK!u5!KxvYZcdi3Gva;Y8t$%@T2N6ID(1tHYLi-V&jI0vJ5s<^nQKBg z@ywcG(ixhrJtj5vH;=0zGw>Klpn%64pG1YL^;CY5hmPXoO*DpB!KFC@N7s!gwUvQz z9ZgMnf^)=7@<$3V3XJ16E#NaJ>cp|EomrBrsX+-+G8Hu^-If_9aTFRzSmUH|gTMl7 zQhb5HSmQ_oR<&Iq_+)c6_IvT5$<)xOB&F`t3&Db@W8lsSl~HG z(XeSMPIY#wuj#~q?tK`^%_Gg2@dmA#r@ILx8kvCq0Nva*XvCAs@&gEBu|xujjT~hW0M934&d1LJIAvQh4JsoBLQjDun-m&nccFKj5?X^U zf8T~ltjRJ^9-T;K10YKR1$ptr$t94vagzpd(~XBVYG|qOsPY)4xU`n#%Jml3H7+~= zl0l?CJM<PUC0W{(Uxz&&V0K1PBh|h6!-~n>)(^3y51J-`E9$1wX zqKYapbfL*q=T%(Kw6VZ>?iMIW{77w3R-6Y?W+hbq%GRDE2`i^kBqvkcF=7GFC8>PR z3Y;fa+4=<;t<0py8dI2wb2afb!oj!0HSE(6u-ia`r{FXJQcZpSSWBJ3A=oY4gYy@K zy1{9XM4@0k%k9K>ThY1hi{&1pcI=Q>$EK#O{7i6`du^N>eWXAHwYH67K~Duh1_eek z;e(9$^T4*+tS8(j;8FxHPYpz5J?9U&HHtpd1)!_#Jj%h4aV@`*7E7pxEWNuiVmg%pKY5GLAK2SOHvYB zcqqLxR4`J5hD372f0zr~_UYUUX!epgT16mf7DSQb9+JpIX(VN-sY;reUU1C0x`F`u zm(!oO4EE7VVE_{}%n*6zXfpB#2B2O#f&*r-s`INzR9D!zNZo`|Hc?u@YFrcH#-4S< z2aBK>pT%Yf#eIcKQ2Emcw$KS91OnPLiu0vOC&P|1QD<#ZdQqszD99EZ{h4AZ9ol)N z70`g1=S#3VOvpHb|k;u$4l15We`--NYU2v#?!6C{`0Zflfm2)PZ z>`e`NQWHlCL&!sBHA-j(UNpk|#j%=HG>)%QY0aC;xJT5j3g)))*Gka+r5-e{e_jN! zx`=)f>e(;s2Q&t!lHtBy8E0jttBKD|0UUDp&xSx?2T?Y(1EB~JE1n{)n^1Y-O|nN~ zsw*K?qUW7SKNk!myzhBEDxD?Ok>l}XFlV@EEXx4NB&10$ni|n)C{7eXV?OIWN8)HM zz=Kgt^pCF^FCmV`FaU^0qIs#xtp0?qTm~hsr@Jf*OK`$jEBiX=i=QA40;)>uDbggN zXHoZ1k^uK9z`nRqX#$>_++VR*a(?2|TYn0iEK%-k00NI3Rn~c`#=76xQ|%a4n(W#_ z3F^r)(I|b^N6HdpO9R9iwJS!}1doGirNv1^whuV1o(x7+-V}Tw0<-Xl$^&f^v zFV2F1F$bAoJdPuaZAtC~K9vz8Xs6yKncMW!5kASVOJi)zN!)Kqw}z&GusLeW?vsda zJD+rY(&aO2TVbLq_!eME_Rt?ZboPy^-ok@PmNW)Z2aJZSe!Nz-JWdZRWtC228JuWE zF4Xu`5`LkLr?g<)Ev>h$;wy`bJ89m8!D<6fE|3W-nv@gbK<9*;ca~lDk~UST)F^l`$Q(hl_jb~E1cVUVy?_rC$_J!~-bHwr^HwECCL3uX~@lx0pb3w^Q}nAlZ!y^jLxa0F@eJbJ^oF>{mDTvfB;P z&PNgfDik`2VofWN8H1R{%lUozn`XAww(-Na_V;!~DYtGBLaP)*QOX&Ls0CQjkHTx| z9b0!xt7+DfMrc6?im*74Y|+}-&odU9;%M4JO(+SYDQ*B}*$jN=$v^cSUoHJQhyMU~ ztEZy0_%&y%hMe)PG(;;_SssOrdDcn{smi!%rfp9aMyF8*o+N+vj6~@hvXVirr9d*N zEnZ{82ohNB(pJ%?F+kMKwKCK7<6O`eoe4St*H+>a)Mzr#g>Z;%l_rd8kp&&wiO)00 z(~k^FBr-ETpG;sZTsV-t>xPY(LZH!AMr0l|9Py+;;bt`&)CM%BY->m- zkwTN02R1(HU^ItHJJuDIejqrFIk~UD1Y5@=faH{55KwRdMyh+r_F`69 zN8LA<&;nod=ap4GHWt`)vw0WEasA0r{OA${RVNs;{tDp-kc4#G#1LEop zDf>hpJUT}jT0l@bI(74Y3Eva;U*gHs5GqY=!_HNG_?fzB9VtT#2JkO#SKzZ zmjc9fY2*Sf3fVoj-)c~6j^VXc^2u$YC7bxzj31ioPa3IVETJRPInpsm;{(mGv9;6A zk*HAxxM|p)6s&2d>m&EDE3vAyYebG^jT8X120~ndYs(i8aUCvEwJiRfDAlC}Dyx~{ zMg8nF8x@}AyQM;xU0pHlkdUgPoGNi0&vtI+Q(M)B}9^53GcGV!XejA0s=)q4A?eTvIIF9GL_urUu3kwTc z#En8K0nSIvf$0MV!(-cF+I3}bD@Lf-Ih8tOVqJ|#0&9yN;q80ayKD0*!DNeV+#`gv zQj3LFcrH{8At&jI)PTiCVSpj~EAuCBJ+s|5<&rdVO}*GbQudNJ$ChOetPd5V7`Hpk z+8cX2fmj|!>6h|Q-ljfE3By_TS8UCHC29Re_&vNM&!z)R-^3#ywTZ3!+qp|w+^^#7 zHp|npZ1n|}2%L3RqcxUU0r1Adxp$t|Z$IU<*4I%<+>yj)h7HA@KbDf@pXEiPs0$VJ zzLL~mRwBCFu49=U6@W$zG?7qLjEEzF7;D$IN4j*48deoFh_ON|z>P;dNw!_x3tN=8 zOQF>oQKEKa)Ek8qtr(gCQR9oPkGQtTH*Ko*3e9UehFTFyuYvOzj{g8>n)khbE2Wf1 zkP>FyHlS)mU=mHtKm$ei!1#51A-6=|EiLU~iDaJTrbUlFUZw?FxoIMx^1y^axPMI0 zOK-m|FF-X#C@It`MSXoe1Mg-rBQ)&Nl3L|~Dsw#BiLZ_T5D5}S1#>N2^7S1x$kP$4 zriMbyB2EWL3K*93qt+Vm+!oxQ+Y6zIQFsbpXA-(Qg%$D#Px)qGvx)_F#zr z0Mtn-S{sqMDRcG0Mkk;0^YaSfZ$(}mr?{e4fw|}x7NJVl#Kv&D2Y>ec=F@vFqiZHo zTV1N~Yio$=j=nluSB)^pw%;QVppPyH|&7MzTfKKdLNn)(g41r$`b1)OjcF5{1~m_O5@Tbu0l z-b}ibvGZ@QD&Wg`b{G zWr`4#SCQ&i(Bugrexh(CNM*P&Q%qV|fIzCYk~8+`_8dG?O1AC@F+m#j=6B&m6?zlT z;ljIH0Ion$zsCatME4i6m%1asMw;12?-dyQX-(Ct=2muCVXvHVH5#LrQ2Q~a2n1HY z<;H+p!IvM1Ca>^U&jd?y`k#uz!Zo4&rwmSB3xV>o&cG;Ba7&R?jIud_j-ZfR zEf`2)TFAhh&r!{DI1LR%4_w-n^<`5brB9HjzY(3@?g^<^=msrX8q+`olkEz8@b=xe zwMjJ6H=-D!X#w--#ZylwdSP!ngQd14r(1m686_MkOK6xzwB#6^MR$2*cgyHN5leTR zNPlJ!bc`$(@TI&FHn&P#TvNd5As75d8@hg6_XO74#I}+pw6mhL(8x!oNc4&|If_(qTAZ;LZC=AC zZg)=0ZyYZzkcDtu_w1Tr@ea>SPmkipU# z?k_GFJB>9u-Q3YmWRp>bhqi4lJHK!>jT>)OHq{5=Hc=rs2B(A&U?9AZaBXOqy+sG^#+6i^Iy&vZr&`QEnMd;2IP^oZ@Q5J?i6635a- zL23h)Ft+;~mit_huqwR}Vk!Zu=~_~znSo!fxLZBOD|?$eRx!5dT&%M$lFKff$2C$9 zFvh$qJ&xgR4&%38p;@iu0poRH{{U(ciF=>&r6=xg!B=Uwf6LP+{Y`=sSCedZAW(5J zH=y#+b1`4-+kzKXFx^Jr#UwMQ#|-f}4HSxas{n95ei&zqL#Sst=y69-RD-355y11q z?R#Xh_crNjp$^ltMlO0Z^nomj%LE`({K;3@i+!HWEH*8ZYPc8ITWm9%iRGe66hi8H zBypfFUqnjevX5N>uk{_`Sg-dP2x%JH6oeD!F$Pxl)L__uN45Dv!Hjw{)Bypt{93a) z*0>PD(oSL^qQ^v4)CsK$)X;h24Kc>IGQN=sEhLRz0YLQ@_7jLM?fXtmhijUIZk@$T z2zqrS6@Z4F^8Jkbac_0`k=<9l*>M_;TTa*x-(m>Pg~4f@dkW!gdoQ%M&fY~(rh8Zy z<{qDZcGW9;+ZmdZ%;SzSILy}*lQd;PsdPyJL855__N01G-Ap$vcIq14&uO(Ot8%WG^7Pz5%zkSHn;dgS`XK4$(|ofMj@6oN73LqpGrHO8H~ z$~8&@6wT;RwWwm!09)HnVZy%ee=hALfEBWZjB)B7Kx%KV--zS3Mcd&5k=sKayO{|T zr=+uc1{vMNBH_lQVtVXPgh{SaeX23jB1CBEt>p^xGae;jO=W$ihY;Nxo`l7^V7IE~ zfMuZ&$iv>_7auRCQdnxex>uFd0hkF9EC=tnTsXhnE_WskSArK1K%>BwVs*FmaCBkjoEpbwQjn3b+>;wXu$(p~udhAowU?Oc4s^2Hk{p;D~W zJOC`@DB<==_FhcyC%p zDk6~vq0>VdXGb1}(xh@=GQ<{VcesXV^a(dFN=YzWm@rU2G0iAJ%p7*5yc>6WOaQL{`S9sfZOUWVzJ;d9}jIl>R(mlDDLab^k zLlIsJ%L#SfyVcim%A`8l$l%+fe#BZZIPGp7rGB6wi42cGloeeok;{cJF1w$8w%ZlRSRi&SG|YG`Fd%uQ zCy+!Z8_#)mM#a4LPVKqhPaTt4LD9Iou#NP?CH;(u$)-%*R%H@K4;85xwS&I%6-sy581a z<+6*_xY)gax-Ii5dEx3rf z*NywvQ)`sh_pwrHPmj=Z#~g9PNi?e(C?%bU0DI0PvDw=1y0772lUeMR?|NfqGy+K@ z1~~Kk>@jqke9}XGx5?4nc8j>$-tyL8xik_0>Q4}9LNf%6ai}9P$b-n@`@26Xp5L>3 z(n8Z-Z3+Z?cH-wVry?z-WA>D3C*ohVi{9GqZJz%CXYPAf(|Kchuhu`bri^4m#aT|1 z$+7cO%LRmz3UywOaY5jOkSpP+;ax5MYV42=-P?&+n(;(orBCjyaMImOjnOoXPNiKW zkVRc2+&-#^BQZv#aMa|IK=UKnhBx;x?RM@oiyIovaG+;GA=0%!v`!Ok zv6#XT6C=4(aY|H{NNG}%nNxw<_V<5I#4mT4KOz_d_lP?zl%_mH>kXr_klzrA}oU`Ii65!ZFX9Z~YcQT2b zit!2p#!rzr>O^k$SBQFq#hNww(ls#AYgt2sFjIT5Qtp z`#iRqnkz_&on}c0dPvM89)hGRQ&k#`T#Rxkb=IMkSQTIhtq3`T;tnjoGP^5!PQ~xp zuHxIw@ThxD$hyfY+uhp&t1{9yIzbG%v}H|dyLWN+J>S>~N zL&lF5vBOElC%sC9kF#5E+mndfblkz3<8hKP zBK2Bnt{tb8h|81)O(m#3HN~9$tv$cVNV;Q4lt$W@CRtE`%PO3mTxti74LI_{N4pWY z+1|*a&ic|4i)_RJ(wZP$w3EV3L~?CBOUEKCk;tWFjesi3av+0|2g4U%nBS6DNwN1c zkuLe#vKIcEyQ+Peqg=z&C6PZ7e{Fpjmu&w4Om3h4(qp)e%=SGLT=gAXiABl$BWdW) z`_}SJ6J*+Ad+VZn;(#$8(?N;%Ex)wS zYVC0f^>2{wJEN)R9^GivANrE5IFW_C?n@i3@))Njle=zYx3ifQ*?$Xc+st4B0AME9 zk>kr3-O2f>-@WPif!nrMUpun)HRj}Y&fVH03>j5ywutQ&#Ap1*rb4a2oLJuW-STW( z=WjrkTMu>Ytgi4y5`i7GhNUhb0+o%)9tB%GTXxsxRis;8{mb;We&)8X^sUVD5xZv$ zr<_t6{nFz+0;~ukpp5bTE4%jJ`pa}-v-cgPBit-qzSJ{N)oaBXs(Fkx&gX1u!vy0ybI9vZZ2u3UAnIE}8ZV0aX*EMtk= zrax^Ek}~_uFk|_Jl~*-spYWG13lweBH1KIoBUTq%nNm8DMno`GRN0rrXWIED_^u$OV0Nj(T*4_f3204!kniVr+3-*j$Cuq3V|m1LA&-I2|7 zp%EvQS*hWKo$Q}`zmG9}xxZb3{gfag`KuwwE2r+MVkqlWrIA29|q6WgEv6LlsS9(&eOueR`_tuBCBlyX>2U7xp)?i7n@b zMRavM)q$b^0JU%)>0%-<#d?YufWnPHL8V4V5?k%fFL7=N+FH|YRho_9^A=bmK20Tj zu{O;#5cYp=U&#wzD0eqgMGUDhjLuaGD>4AWII32vBo(eD-*#&i?pWYtXOhf4QA~;@ z{4ASN##xjD>L4f}oLJxXh1IRb)pZzaX)UNVsL1LWFmQ5ZZ%{cft}b@F(;~rgKbsR2 zkr;d~tSOj0xE=aouLVj7VXyZiBmk5Wh`QC3B@!8MtIJu2_cd&UmivE~64# z+{D4sL}5@t6$B7){{Wbuly|Gz-SY|$p0HKbW4gqdh%TT7L$BST4xD3Qnza4B-c}O! zw|Z?U{{YDL{lf=$RXR-ea#2OhB;~0_rTAo3Y_Sx3mhOjexQt0{vcRu#eIO#EMWg~r zPq#=Oc$xcax1#NBp?*F0d{(=h4;9<(93r0%wZJ|pjqdY&?#_a>YuiZ{;?DXdn%ZR*StF2C5Dy{`JY09@7j-ox-FtpY zjk|RT_GOJo()7t)eM`!t&}Z%5&ORk0Vj|ZIOz5dY}{{mPgS)Wz!jS{!+CVIP&LVqTZB25)es{q5{oA0HXNU zfW(koZF9hi$EAPi5XhhdT@J!kH6&1{E;Pr>-CIX{7-fEhh$LM~Y6(&Z$oS*s?Cs*P zw${=JBNSC5sL%8iX(caolGLa5ojEb=0q#TGjgU1(pX6I)H<+k6% z&|g?w#q#7cr;s&Ba)7o$)kViVk;iR~cblagM)c|b)kC6yJ zXyW2)+vsj(ff_iHLa7{7rBz{os-W?wQx9clbqd26^g{w^O!6a4bg#CH=ZLN2+wLwF z;Dtqzme$@%ohzj@>woY*BJGaiwB0+ma36m?aP4qTGI-(E!dd!eptV&=;4x*n zcFn9%>=%%%w!J8pBC2=^6+p~*oPMkv`0~XDSoU$kMHFo;vKmJcDQ08f0I5FgHQakQ z$|jvr#d#vZB%ivDYyK)?Yxakach;)gInJi*A*h#V>wxdIF+ad2g5){k=`rlaGY zXZ7QG{;_bES9^>zN_JB3aXrB+s7DR5>y?3VRie>Yk_zHI*2a6D)wtb~8@>MkWsTBn zQ*u>WO>z7JRc}j45nXhvYQuL0_WuAq{>GPg7BJYr${~_VISeyZ6bQ&!6_eDjm^tBw z&9>Xy+{Y6OS!D%|s(L|u*e!U4rUkD3wF9KR#1L@+rJaed$a0Fx4kFC;yFa+!w{P^N<*cM+Bv43YY7&wmDC0Fev7(xTf+!BD@aYW2C}A*!2=SEz*O<31XjCzQ#k<4L~9go!i5o7f^ zH4DJ$$w8-risG^`j2-~-KEN}_Z`y6M^?T!OlH%gye%d5ey4unuK!$mv)FXKrw5mOI zfWefg#Mbb40@>JIGV0$yrmPn%swwDuiDiLLiAWpB3|{ws)v+G;-YtQj*b;+WIf-I;Kf z&ysI@^Bun4pLt>-r*ZrOzBp#@Zt=UnLTcMC&JNvX0sAcK%{!0d9?VN0Z|pXES(nu; z@WeW?* z+b^#1bd$I4M17ms7M`QPN}jRLQ1s#ZZ@Mfb?XK##O;T-F3<^$w(9LNuqRkocT*n3q za=_0LU);nyZ@wXmO^0_`#x+P(dLz7u6%(hlhF(p`or}G;hO>s@m~ETnL_Xbp7(Wy< zFjUn}D#KFq7zPEkkQepL%F-wtO(k$6{{RSF@X@{72^1E61jy~=SgVjLT2v8;jg^#T z%hoHamogQ~l~br@dFXNBrwt9{;n3$bk^vZIIqDz{Us@k-5ZYS8lDiI&kMX25;_OM# zr_8eD_HlJ_Z!BW|%FgO&`c53IkwEN>#Q+tr3X{VYo8)#=rMxowZ&?YBO()bt@FX5M z?E7-yB1!Kvyd1;fr10XO(BQzlJ-Q0&r;LP|C^e2Zt;YPA#@=rZt;z zxmS3hXH)?r8l-Yq

IbllLa-*H6W)Y<~_h-5 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 R>aVv0`Bdp28d9Sl|JkTq>5l*a literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bba1085265f59cea7bee7754850d282760a1ecd7 GIT binary patch literal 77287 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

Q5e9;f>JV&F3`cck4b&WmC<&2{rZm50 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Ị7l5TU&i&qvHOQ|;Wsg3-AK6dCb9wG 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..74389d8ca08257a23e73da530529831d900cf00a GIT binary patch literal 4178 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/index.html b/vue-light-bootstrap-dashboard-master/public/index.html new file mode 100644 index 0000000..76f3145 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/public/index.html @@ -0,0 +1,52 @@ + + + + + + + + + Light Bootstrap Dashboard Vue + + + + + + + + +

+ + + diff --git a/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/manifest.json b/vue-light-bootstrap-dashboard-master/public/manifest.json new file mode 100644 index 0000000..f608d2c --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/public/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "vue-light-bootstrap-dashboard", + "short_name": "vue-light-bootstrap-dashboard", + "icons": [ + { + "src": "./img/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./img/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "./index.html", + "display": "standalone", + "background_color": "#000000", + "theme_color": "#4DBA87" +} diff --git a/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/robots.txt b/vue-light-bootstrap-dashboard-master/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue b/vue-light-bootstrap-dashboard-master/src/App.vue new file mode 100644 index 0000000..ff97524 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/App.vue @@ -0,0 +1,38 @@ + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css new file mode 100644 index 0000000..5ad0114 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css @@ -0,0 +1,828 @@ +.tim-row { + margin-bottom: 20px; +} + +.tim-white-buttons { + background-color: #777777; +} + +.typography-line { + padding-left: 15%; + margin-bottom: 35px; + position: relative; + display: block; + width: 100%; +} + +.typography-line span { + bottom: 10px; + color: #9A9A9A; + display: block; + font-weight: 400; + font-size: 14px; + line-height: 13px; + left: 5px; + position: absolute; + width: 260px; + text-transform: none; +} + +.tim-row { + padding-top: 60px; +} + +.tim-row h3 { + margin-top: 0; +} + +#navbar-full .navbar { + border-radius: 0 !important; + margin-bottom: 15px; + z-index: 2; +} + +#map { + position: relative; + width: 100%; + height: 100%; +} + +.fixed-plugin li>a, +.fixed-plugin .badge { + transition: all .34s; + -webkit-transition: all .34s; + -moz-transition: all .34s; +} + +.fixed-plugin { + position: fixed; + top: 200px; + right: 0; + width: 64px; + background: rgba(0, 0, 0, .3); + z-index: 1031; + border-radius: 8px 0 0 8px; + text-align: center; +} + +.fixed-plugin .fa-cog { + color: #FFFFFF; + padding: 10px; + border-radius: 0 0 6px 6px; + width: auto; +} + +.fixed-plugin .dropdown-menu { + right: 80px; + left: auto; + width: 290px; + border-radius: 0.1875rem; + padding: 0 10px; +} + +.fixed-plugin .dropdown-menu:after, +.fixed-plugin .dropdown-menu:before { + right: 10px; + margin-left: auto; + left: auto; +} + +.fixed-plugin .fa-circle-thin { + color: #FFFFFF; +} + +.fixed-plugin .active .fa-circle-thin { + color: #00bbff; +} + +.fixed-plugin .dropdown-menu>.active>a, +.fixed-plugin .dropdown-menu>.active>a:hover, +.fixed-plugin .dropdown-menu>.active>a:focus { + color: #777777; + text-align: center; +} + +.fixed-plugin img { + border-radius: 0; + width: 100%; + height: 100px; + margin: 0 auto; +} + +.fixed-plugin .dropdown-menu li>a:hover, +.fixed-plugin .dropdown-menu li>a:focus { + box-shadow: none; +} + +.fixed-plugin .badge { + border: 3px solid #FFFFFF; + border-radius: 50%; + cursor: pointer; + display: inline-block; + height: 23px; + margin-right: 5px; + position: relative; + width: 23px; +} + +.fixed-plugin .badge.active, +.fixed-plugin .badge:hover { + border-color: #00bbff; +} + +.fixed-plugin .badge-black { + background-color: #777; +} + +.fixed-plugin .badge-azure { + background-color: #2CA8FF; +} + +.fixed-plugin .badge-green { + background-color: #18ce0f; +} + +.fixed-plugin .badge-orange { + background-color: #f96332; +} + +.fixed-plugin .badge-yellow { + background-color: #FFB236; +} + +.fixed-plugin .badge-red { + background-color: #FF3636; +} + +.fixed-plugin .badge-purple { + background-color: #9368E9; +} + +.fixed-plugin h5 { + font-size: 14px; + margin: 10px; +} + +.fixed-plugin .dropdown-menu li { + display: block; + padding: 18px 2px; + width: 25%; + float: left; +} + +.fixed-plugin li.adjustments-line, +.fixed-plugin li.header-title, +.fixed-plugin li.button-container { + width: 100%; + height: 50px; + min-height: inherit; +} + +.fixed-plugin li.button-container { + height: auto; +} + +.fixed-plugin li.button-container div { + margin-bottom: 5px; +} + +.fixed-plugin #sharrreTitle { + text-align: center; + padding: 10px 0; + height: 50px; +} + +.fixed-plugin li.header-title { + height: 30px; + line-height: 25px; + font-size: 12px; + font-weight: 600; + text-transform: uppercase; +} + +.fixed-plugin .adjustments-line p { + float: left; + display: inline-block; + margin-bottom: 0; + font-size: 1em; + color: #3C4858; +} + +.fixed-plugin .adjustments-line a .badge-colors { + position: relative; + top: -2px; +} + +.fixed-plugin .adjustments-line .togglebutton { + float: right; +} + +.fixed-plugin .adjustments-line .togglebutton .toggle { + margin-right: 0; +} + +.fixed-plugin .dropdown-menu>li.adjustments-line>a { + padding-right: 0; + padding-left: 0; + /*border-bottom: 1px solid #ddd;*/ + border-radius: 0; + margin: 0; +} + +.fixed-plugin .dropdown-menu>li>a.img-holder { + font-size: 16px; + text-align: center; + border-radius: 10px; + background-color: #FFF; + border: 3px solid #FFF; + padding-left: 0; + padding-right: 0; + opacity: 1; + cursor: pointer; + display: block; + max-height: 100px; + overflow: hidden; + padding: 0; +} + +.fixed-plugin .dropdown-menu>li>a.switch-trigger:hover, +.fixed-plugin .dropdown-menu>li>a.switch-trigger:focus { + background-color: transparent; +} + +.fixed-plugin .dropdown-menu>li:hover>a.img-holder, +.fixed-plugin .dropdown-menu>li:focus>a.img-holder { + border-color: rgba(0, 187, 255, 0.53); + ; +} + +.fixed-plugin .dropdown-menu>.active>a.img-holder, +.fixed-plugin .dropdown-menu>.active>a.img-holder { + border-color: #00bbff; + background-color: #FFFFFF; +} + +.fixed-plugin .dropdown-menu>li>a img { + margin-top: auto; +} + +.fixed-plugin .btn-social { + width: 50%; + display: block; + width: 48%; + float: left; + font-weight: 600; +} + +.fixed-plugin .btn-social i { + margin-right: 5px; +} + +.fixed-plugin .btn-social:first-child { + margin-right: 2%; +} + +.fixed-plugin .adjustments-line a:hover, +.fixed-plugin .adjustments-line a:focus, +.fixed-plugin .adjustments-line a { + color: transparent; +} + +.fixed-plugin .dropdown .dropdown-menu { + -webkit-transform: translateY(-15%); + -moz-transform: translateY(-15%); + -o-transform: translateY(-15%); + -ms-transform: translateY(-15%); + transform: translateY(-15%); + top: 27px; + opacity: 0; + transform-origin: 0 0; +} + +.fixed-plugin .dropdown.show .dropdown-menu { + opacity: 1; + -webkit-transform: translateY(-13%); + -moz-transform: translateY(-13%); + -o-transform: translateY(-13%); + -ms-transform: translateY(-13%); + transform: translateY(-13%); + transform-origin: 0 0; +} + +.fixed-plugin .dropdown-menu:before, +.fixed-plugin .dropdown-menu:after { + content: ""; + display: inline-block; + position: absolute; + top: 65px; + width: 16px; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); +} + +.fixed-plugin .dropdown-menu:before { + border-bottom: 16px solid rgba(0, 0, 0, 0); + border-left: 16px solid rgba(0, 0, 0, 0.2); + border-top: 16px solid rgba(0, 0, 0, 0); + right: -16px; +} + +.fixed-plugin .dropdown-menu:after { + border-bottom: 16px solid rgba(0, 0, 0, 0); + border-left: 16px solid #fff; + border-top: 16px solid rgba(0, 0, 0, 0); + right: -15px; +} + +.wrapper-full-page~.fixed-plugin .dropdown.open .dropdown-menu { + -webkit-transform: translateY(-17%); + -moz-transform: translateY(-17%); + -o-transform: translateY(-17%); + -ms-transform: translateY(-17%); + transform: translateY(-17%); +} + +.wrapper-full-page~.fixed-plugin .dropdown .dropdown-menu { + -webkit-transform: translateY(-19%); + -moz-transform: translateY(-19%); + -o-transform: translateY(-19%); + -ms-transform: translateY(-19%); + transform: translateY(-19%); +} + +.places-buttons .btn { + margin-bottom: 30px; +} + +.map-container { + width: 100%; + height: 100vh; + max-height: 100vh; +} + +#menu-dropdown .navbar { + border-radius: 3px; +} + +#pagination-row .pagination-container { + height: 100%; + max-height: 100%; + display: flex; + align-items: center; +} + +.all-icons .font-icon-detail { + text-align: center; + padding: 45px 0px 30px; + border: 1px solid #e5e5e5; + border-radius: 0.1875rem; + margin: 15px 0; + min-height: 168px; +} + +.all-icons [class*="now-ui-icons"] { + font-size: 32px; +} + +.all-icons .font-icon-detail p { + margin: 25px auto 0; + width: 100%; + text-align: center; + display: block; + color: #B8B8B8; + padding: 0 10px; + font-size: 0.7142em; +} + +#icons-row i.now-ui-icons { + font-size: 30px; +} + +.space { + height: 130px; + display: block; +} + +.space-110 { + height: 110px; + display: block; +} + +.space-50 { + height: 50px; + display: block; +} + +.space-70 { + height: 70px; + display: block; +} + +.navigation-example .img-src { + background-attachment: scroll; +} + +.navigation-example { + background-position: center center; + background-size: cover; + margin-top: 0; + min-height: 740px; +} + +#notifications { + background-color: #FFFFFF; + display: block; + width: 100%; + position: relative; +} + +.tim-note { + text-transform: capitalize; +} + +#buttons .btn, +#javascriptComponents .btn { + margin: 0 0px 10px; +} + +.space-100 { + height: 100px; + display: block; + width: 100%; +} + +.be-social { + padding-bottom: 20px; + /* border-bottom: 1px solid #aaa; */ + margin: 0 auto 40px; +} + +.txt-white { + color: #FFFFFF; +} + +.txt-gray { + color: #ddd !important; +} + +.parallax { + width: 100%; + height: 570px; + display: block; + background-attachment: fixed; + background-repeat: no-repeat; + background-size: cover; + background-position: center center; +} + +.logo-container .logo { + overflow: hidden; + border-radius: 50%; + border: 1px solid #333333; + width: 50px; + float: left; +} + +.logo-container .brand { + font-size: 16px; + color: #FFFFFF; + line-height: 18px; + float: left; + margin-left: 10px; + margin-top: 7px; + width: 70px; + height: 40px; + text-align: left; +} + +.logo-container .brand-material { + font-size: 18px; + margin-top: 15px; + height: 25px; + width: auto; +} + +.logo-container .logo img { + width: 100%; +} + +.navbar-small .logo-container .brand { + color: #333333; +} + +.fixed-section { + top: 90px; + max-height: 80vh; + overflow: scroll; + position: sticky; +} + +.fixed-section ul { + padding: 0; +} + +.fixed-section ul li { + list-style: none; +} + +.fixed-section li a { + font-size: 14px; + padding: 2px; + display: block; + color: #666666; +} + +.fixed-section li a.active { + color: #00bbff; +} + +.fixed-section.float { + position: fixed; + top: 100px; + width: 200px; + margin-top: 0; +} + +.parallax .parallax-image { + width: 100%; + overflow: hidden; + position: absolute; +} + +.parallax .parallax-image img { + width: 100%; +} + +@media (max-width: 768px) { + .parallax .parallax-image { + width: 100%; + height: 640px; + overflow: hidden; + } + .parallax .parallax-image img { + height: 100%; + width: auto; + } +} + +/*.separator{ + content: "Separator"; + color: #FFFFFF; + display: block; + width: 100%; + padding: 20px; +} +.separator-line{ + background-color: #EEE; + height: 1px; + width: 100%; + display: block; +} +.separator.separator-gray{ + background-color: #EEEEEE; +}*/ + +.social-buttons-demo .btn { + margin-right: 5px; + margin-bottom: 7px; +} + +.img-container { + width: 100%; + overflow: hidden; +} + +.img-container img { + width: 100%; +} + +.lightbox img { + width: 100%; +} + +.lightbox .modal-content { + overflow: hidden; +} + +.lightbox .modal-body { + padding: 0; +} + +@media screen and (min-width: 991px) { + .lightbox .modal-dialog { + width: 960px; + } +} + +@media (max-width: 991px) { + .fixed-section.affix { + position: relative; + margin-bottom: 100px; + } +} + +@media (max-width: 768px) { + .btn, + .btn-morphing { + margin-bottom: 10px; + } + .parallax .motto { + top: 170px; + margin-top: 0; + font-size: 60px; + width: 270px; + } +} + +/* Loading dots */ + +/* transitions */ + +.presentation .front, +.presentation .front:after, +.presentation .front .btn, +.logo-container .logo, +.logo-container .brand { + -webkit-transition: all .2s; + -moz-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; +} + +#images h4 { + margin-bottom: 30px; +} + +#javascriptComponents { + padding-bottom: 0; +} + +/* layer animation */ + +.layers-container { + display: block; + margin-top: 50px; + position: relative; +} + +.layers-container img { + position: absolute; + width: 100%; + height: auto; + top: 0; + left: 0; + text-align: center; +} + +.animate { + transition: 1.5s ease-in-out; + -moz-transition: 1.5s ease-in-out; + -webkit-transition: 1.5s ease-in-out; +} + +.navbar-default.navbar-small .logo-container .brand { + color: #333333; +} + +.navbar-transparent.navbar-small .logo-container .brand { + color: #FFFFFF; +} + +.navbar-default.navbar-small .logo-container .brand { + color: #333333; +} + +.sharing-area { + margin-top: 80px; +} + +.sharing-area .btn { + margin: 15px 4px 0; +} + +.section-thin, +.section-notifications { + padding: 0; +} + +.section-navbars { + padding-top: 0; +} + +#navbar .navbar { + margin-bottom: 20px; +} + +#navbar .navbar-toggler, +#menu-dropdown .navbar-toggler { + pointer-events: none; +} + +.section-tabs { + background: #EEEEEE; +} + +.section-pagination { + padding-bottom: 0; +} + +.section-download { + padding-top: 130px; +} + +.section-download .description { + margin-bottom: 60px; +} + +.section-download h4 { + margin-bottom: 25px; +} + +.section-examples a { + text-decoration: none; +} + +.section-examples a+a { + margin-top: 30px; +} + +.section-examples h5 { + margin-top: 30px; +} + +.components-page .wrapper>.header, +.tutorial-page .wrapper>.header { + height: 500px; + padding-top: 128px; + background-size: cover; + background-position: center center; +} + +.components-page .title, +.tutorial-page .title { + color: #FFFFFF; +} + +.brand .h1-seo { + font-size: 2.8em; + text-transform: uppercase; + font-weight: 300; +} + +.brand .n-logo { + max-width: 100px; + margin-bottom: 40px; +} + +.invision-logo { + max-width: 70px; + top: -2px; + position: relative; +} + +.creative-tim-logo { + max-width: 140px; + top: -2px; + position: relative; +} + +.section-javascript .title { + margin-bottom: 0; +} + +.navbar .switch-background { + display: block; +} + +.navbar-transparent .switch-background { + display: none; +} + +.section-signup .col .btn { + margin-top: 30px; +} + +#buttons-row .btn { + margin-bottom: 10px; +} + +.section-navbars .navbar-collapse { + display: none; +} + +.section-basic { + padding-top: 0; +} + +.section-images { + padding-bottom: 0; +} + +.documentation .dropdown .dropdown-menu { + transform: translate3d(0, 0, 0) !important; +} + +.documentation .dropdown .dropdown-menu.show { + transform: translate3d(0, 39px, 0) !important; +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..cd4c781087e5b9057fdcc0eb885355e218214c63 GIT binary patch literal 27560 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg new file mode 100644 index 0000000..93c6dba --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fdbc77a39841908e8d780c5c7c86a55dd6d5a02e GIT binary patch literal 27376 zcmeIbdz2j4c^_E!*5lT@s=KS-&*`2=&tQ6{=g~8R_mBjE;X@=uf)w}=i2-H+j5xrI zW(E)_QZa2yI*_a=jKl1qHeN;RJ&_s5Cx@Fj8)VnNJ=4HQMaqA14q&aFRt_WD2g$$4C$ zrYI+0I={NS;yyiI#<|}|nLCdPZn9I@{wl?0Vh8m_AH*5bLdr{G`_p8d^#e1Xo`B~h>ooE3?S5f;Ruj6O$UQrgith*wgE*n3i zyocV|RP+Cr|9sj2-9i0K{W*>TS>T1ZzgUD?>Z);kLgG-bDc9vW8r64K-h-re8NFja zmLiUGHC)k91SHDB_Z-NKr}#>sgi1n5Dk&vW(n?0jDmf(&IV~zBrL0txs!~%1lsaT> zP#IE&l@X<>j4ETw9{hewnNTJn<5SACGNa5Y9c50LR~D4L%0A_QvR^p}=|8M2DtACS z?^2E^cPmGgW6F|pk8-bapK`zQG35c}LFKseapfW9VdaGKi1MiN3FV~nnDV&tgz}{F zN#!Z!Y2}o%tejTPC@Xjz8VUcUzof>|Uh6djTBS?9P7*<%&_q;7Pjw+ZR7i@tkOL|t z4_!zW6_T(nT9gXun68KmWJKvg6Hy_J)V1OQxly{1I4UH0T_-M(C8dkIqC)zx>%|4~ zrF8wcK+=>hECUtDoYD>B0_jt_iMT)xm2NUFkVvJQiVI{@=|*vZlq%hHTp+JXHxm~~ zuF}oM1v0F3VIinMnw4%oE|6=bTZjuJT94p=FxL`ypU06~o7~4vBHZBE0I?=rW~ye_Wu|lO_jp{O{gm#<;{rXXbRUWfG@{ad zI4;nQO7}!upe2>=BXNPgRJxDG1)5Xoej+Z=p-T5;T%b*r?qhL*URAn}#|0Wz={^w` z=vt-wWL%(imF_3w0{yFWpNb1KvC@4yF3`zJ_f%XI`dp3+^t94F9T#Y9rF$kW(A}^~ zaUm@(UoSGwew}@r-Qb_)f2iiv-_?GmzhL;rZ-{B}l=v<2J#)+ami2)3yY`*-Y5RHm zJISnCVrTFJoyXB-$@-!{Z6zm`lo3v z{Tt~YW_~$yJ-d|sR_=7}Z|Cj&_X-PztHl>e50&01AF1RjuT}4@zEthj7Hi)b`0Bv7 z>zj>Jjn^B0*m!Hu9{l3qZw|dQTo|4mJ~6yC{N>?48M)p(+WhKhVf3eCvt!rxoZR#M z@q0;E;`OHTQ)r`MNb(YT<#B4Ed7lX*TVYi;Gk=K9&&`euk4!M(vuwtg&`@=lwQ)F` ziP8~j16DuG=7uLxA<_+;Ie$o<&Sr21j`7ayv`Ei%8rgKCGxOP~ZiSYbca0;4o6|YB z@@}n=(mjoZ4&InrOj`3^5=XR*OZ%RY)P>PVs+MjrAzbb!1*#2IOR#~3g?6*~u9{1f ztKOc#G=n{!owdqI%S=S~%mgfxDEbK_s+p>3W_?2lPk1ANuKH8=q;-`)@USsEP}o zGV8MnJH#fKY=V*DSu|PJs1MfzmYtqMb;f9n%+F0%(NZkCw0L9DY~!DNTe!YZv~44m zaYfoN4Kp$gUGs)>e3)mlPd&wEc{*apKb{DADmAL9>@D~E-_OyjX@>NA$qx|(1ejNH1)1hb#Rcer+EkOg<=>?=p0WbZDj8m$Dy;1VXQw6Ip0ur@SKs)>IV83 ze`VI_ea>`dNf<^Nz0V0&A09#PLL4e|T4(kU$5Y`uQD%B>mL4`ThG*yK1T+|l(=-mw zWTxh4hZ|WVoo&xgPqN{L6p|Mh7YW19X)4#Oq{h`7*hpH~&~mme85b%|c)%`~>q&-Gz|h z&GZ>6%%EU$ovG=Do(n`GNG2iM3AFDRcU;eN9oA6@FBuSZhX zxa|$syLvS)A95`@-f?elz-t(RHM|R!;1SZ4xW9CT&(F<6grjU`dVcO8EEqub2V=u%a&e# zaYoe>30-YmUCQN5{JoefsZ7tHtI~_jTxhPCh6n;x<)-(7sXDHsdRLbW%hPoup^FgX zA8+&KXme>%7drl47|&2c<3OHw}EnIEYe@+l##H%0gmo5A)iwU(t0KB0P+FjdZK=7L#c zTs4K|8O-BBDc~NvGf1mf)W{c>Z3yj(X@29%m6~b(DUX;XJkzkAZQ}K;rCXk`Sfr(y zVX$=GD1^EWk>{K-_Q~4f?CkkkZBfQXq?z7^2b+fHH;AV&AYR$|&TwNyV9*7)`&o>& zY&vR;bh2qt?;K{+_s^?*XNR%vg-^Ao+U=>Q`P?)+_vSgq&a&@^?CYbWzw8c#hR;0T z_gHDl|FSpq;?mNP_vH%x=6gR=y2?-B9hc!zkdE*6jwSI40*R zvoYqAhH98eKk%S54JV&ebz4u{dh%U0nR5+4>j?w*6=;I1x~KaF*R{Po<=S38l`AE6 zm=PwJrstBLX5@Vf+SbybxK&k0*E7ZqZsN{VJMU#2jT?@a)F8(=k{?Qz({@5-9OK+Z z+x|rP6ZGhQ_*JK%fqzl?i^@yNE6P7qevjIjtnA3J0lSQLLbFmMp+CvWW;4{@*qA3H zEL#dg5JnSiizbwo7~jDlMg{c(so)ClRg4VNmvJ>ZK0JcXgZ8d48W7Oz6AV|x2~ugl zU!x1$NIH{^$VA|a!*p5PL>d(a?xWs;<3Jb7;A+{-RGJ1D-BIUx5$Mp*$(mtuH7#^6 zU|K#*7|hTNM?^lF)POn;jmQ*+%Y|^lih(8$Ox^I%-zI04C4_CeOjiXucPTZ(f@~-> z-BV5560ewO-89q$8s5)M(a=%VoEcOdp_fKNQytxHHttd_i>o-ZfKJn#K<6*nj;85Z zUoZ%Xa5#U;tyzp)YAU7M{2iVSTxM{?c9U7t@XA)in88w}<8ZCym=@QVDh9Kb3D?C> zYr5c0nC9G3g%%l_rfRAV5%3K>=mZbB75Ih_vk`P^++8&E4ok72VM#)R{zX4RC`Q@=)IF-D&A>^V1O~ED zH@;?w$w5bGnrYgZny-ho38PgF^s4LFQ;o7GaF;7Yw4;sGNSX55sh)p z)I(hzt68w)T!lqf%dK{9!y>@b?>l$ojNj66+NV~?bN9zG&9WvuGZJO^3hGl@JsWWr7k`3{Vg zo+-Ol5;s`FODi=|@XCZnxWdahJ*lbc;?+e6XVS=)0Xw^HB4d;=MlcG@cho|{JZw0T zZW+GgYobySYLKzuDO>gCW930>nSVav@hmB~b*<)u_U+YcKE zYmx)(r-&O$KuRX1r*SW0SVW@pKAc7wKu8aR#t!+#@S5WmBVXzRzB9QOG$6?lhXX#L zk`ZXsry!(oMY7Y<|9DO}41VgyDM(f%1RkNug;!ZPdHrN+x4JvBxcIPa+mpg^^EF#z zgM;XJ!@@wCUR-2uRPT0kuf95coBGLU=74NZh^Pt2m^r%7 z4FgJ=R2iC~@4sFL8s`BS%Mwa8PvacDNy zb8&EKu>ZGyQ$D2LfdYQ5*CsMPxYZuADa z1N#Zkug3_TfbOP;BLyR4_UsG6?^vJC^uSYTknKgx%8E^w1Jydv^&5PUkq zD7{cJ1U?bXGhI{?Mj}#O=y!Z&A7b~Uo8F^4(D9yws~8DbcZ6&SLv;nTnHjixI+?J- zg3whCRzrbVKU)m(1`FM6ZIlzwrcq!K1K{X#n$wMH&BA6 zVw+@_Y23uPg9h(D3H86#9pKhg*W`K(Hay(4*(sWLjT=O=p|%+7ruh0Lbyo{ zg9rUjs&DK9TKWO!z87D-`#-7rhr8gGezcj^%sc<1s)d2r6ld?!XF0^?^sE$}-VMCz z1Yw`jYTS%XJHtTa5S|l82V)`)?)(h7hlGeb5bY%jG# zSPe^m(fzuiUxUNye%|HowQFyh=G&&3yLRpCaLMozmwKP8wc3?h4YtCzo_?x^*Eb`F z+ki_jM5+5pt{Ho1{N!R-3&Yy++G2+5f-V6`lAnui&P7inro`)Q{OjW-v5d$4NzWti zGqghqvP57S3{6GWdc!fV;t2KS?~ zgILalrqB90QzN}haW7#QZ%TYs_Jj1WJ9v)1d469-Xf8ERHkZs-UND=v1t6a1Uk`Jy znC2_F+6gy2WtykL9&QVq;-|Q>D>X-q+|u>4GxLpl2aXqvSR~|T++sbo(bpgF=Y7Dp z61OD_V8q*QIrq)P@@az){DE-p{8*^v{+qwi*A<`ZZ~Our2G_Fz+J03C12G6~{;BrY ze~t|SWSNH?Twv^%``SV4Zvd;pM(4ov>;6Q z%>2k~9e5AjFU8t*1E_L)lFc@5jd#TM!-&o6I6Vu!KrK-J!c)w4*gs0^PoJ~+t1QX> zd-h%2TS5RWeW2Ih2G@X@-o=<{+%q_2YX3aJ7WT2hPxIvH6tA(m)&@Hqnp z%m8!DTrRf!V6fEms(!xi33I9@vg*h%0)JaKL^ZN9rdlj#{3Jhbh$pnkx>+$jL|Y$w z=0|EJTdYmj3p&>gXHTbCn}h>&uroM_vD`{!hJXpFM&vhA;yk-t?-2R~ykd!-;k}>1 z=--fbu1PsW$SI;uQeyqPB==Pqa+e;9G!VuJ+AHmI^4$8*_2MQ|3#0ikZHeNbc8aU> zg_i4ESv_eM_U7CW*^~3;d9}1>HeDz&mQFZTSAA_E%#RkJxjDBdO5#*rt>vnB=8=-| z)X+?LQPDboU{>TtbFM#K&W!jb^lT4DjoW@gSww``kDouR^-2Fg_&&TBMkdrrMqN?C zLsDl*H)U=H*w(Jj$!2DxV*{u5L%YdSHH33o^Fumo0pPM{Bag!@FTUDN$pAJ>o8&P zxe@=tNlTZr;~^YXM-1knxLi$-0(~}%lqXZGdE3tfX0{6J4jG`LK+pbD@>u5uP-k*W ze`D#m{>Wd25Bc-Q9;6Lo@8HE$oS8&Ecun~d>8>8E(i@~bPnBX3z$^0cRMNi45m5t> z{2-=*I7o?*bt9eFnWf=Ga3lqFEGB3Y}s(nDFD8RuRWwJ1)4(SABWo9l9&gFz& zO;?VTa~0dfIM4Xy2?w~Gp(T-U3KBZKERz|gj#dFcI28XG#?Q#2Dsy-ph2s}THq7`UwQ#9h?Wz^yW032gSkCkf+hWN=!!PX zqA^^A{SULgnKK+0V6$Osnn-xb2!JABiDVf^g(f@)d6ZPf(1WNFibxk0dS*&>y`t~x zhHa@~2)M&RCDuCCtxNc$HT;^a(jg5{c_Yz!IyXry#>1Wma?= z&*6tl7GfJH3gmE%zyP$9%_e=Jxv*$JR3IJPDJPocBt{b~K;Wy!Od%ZzColkEQ!Y`p zBFEP=d{A$-^g;7oM%f-fOFBSpTld{SMaT%G+0g}Zml0yr61@LZF+iK7OKG$ujvAT3 z34{&=TMP9F$2t48{SCTeX{7xqd%`U zxsXMBTyE&ujI>3tp$23msSF^>@ANh5O)Qsk@ld0r3P^CE33wK|bbb!l&=e|Y6FDhi zR2W4{JLSnBkqD-%>4{_|pV~L#NBK-CZ)MW^4z?q=xwkyd1`n1KsW7h|)_I;C?Eu9F z=Ju{u%a@Ln^EH*berD<3DWI!bkUDrrA(wJS_Z^&!?oG1C@(vqqrw*%m4t-P}L)>JT zWD{bnjLBGNpYn`yS@{L@a4)cx@}Aj`Oc`Zs4sqDQY(@Jch&;hV}wZozy(8l4C>24 z{xT6Fjmfea5Pk#sGN_$dVE|W$jTK@q++L_KOUvr2KERQ_Od|XlV`?Txcyk@uuN=Ze zcvF2(`RpxE`8%bB!zwa8+Z<^-7pMT!F)lT{AsGX6B+Sdm2Sc~0whCs1Y9if>pC-bH zCAOi$(H**zvXS@GG^CDUhIN+5=-jqkjX&~HUUuxKGQ=Wji6kCEb{sw?d~84`gtpF* zgb<{NxEpQO54#aQ5d2CJOIxP6rl4>}>LU#Z-0oOBrOJGaru`xEmMU^Fs{ZEpG|&~0 z2&=qQ(Z%)afQfkGn`Nj07>Vm|EG~W{m;2{*;>(m|1Or0<8ge8|wSmI9E%c}UK#)4XP7V{>3-W}2WEZ6;*^w|Qo~eh1Rym$!LfTn+ zDCv{$rY+#nNuVU9#oWv@Ti96>@#|<9BK30YO1QN2_gvth1mA2%F6> z3MY|C0A2clb`4ex1RfKBgLX`qyjE-CzDKIzKFv!YXJuCWRd~dTl;cBs_~b;2%*=dS_RUllWQe!-?&JIRUjN&B+0ONS&p&xBpQu!; zmHIu^gNF_uK2*Iq=HlyF==%z>7JJvE=ci~2S!)sFZ5hbGNE^Ugg;Hb_jDF(!^>1$MLoc`-$t$YU^PO+OK(~FB^a)1yG42ue^JPQF7~>DyDP5>3 z#QY+eQaw8#e!x@yQnUF+v-#KJ^Z!Ep?Ym6#2T^mHb})i*CAEm|^D7wms!?sgmU{1Z zhR39Q9+ju6@@uUK4c_lp27fpK{v+6g;AGGfp{3CS@w2Cibde#l0h~A-$RgVokxLvS zGNj^3_tB8WRwFAZ5a^|jRGA5$f)@;}kr>)Pw@=^N;vLJ+BkC~%aDb8m=q$Gqz8?5c zX~12C4}F$RApI|rMRPruo18Fg!4mqhqd&x@Lhve#kQR7R=m5`0 zZd(f)p$IiE-7t}vwF>Fcyr)6SXWm7++jij<=>y|#6Nl_Q&iH_C0^bI^25~J1+^@q3 zAo5D!2Q*tnQy{v{9T>HSfClEWtvm7}gd5fGXLz0O!0)_YIfZ^Url==lPzrwBBx_Tr z)89?(M?NGubrRK{0B;1A4qhNml84aq@=vxye5DCa>TM?TkGM!_sU#BbrCOmKfXl&L zBdlkP_W8D+%=<>D2dGm6M@#Ty;C?s}Y?C`VI}8sDN=lRyTBZX2jbVsNG8!&gZr~OY z&YvJ-Zx-(;>yetuXAm<2FAGAD49pzp1RA&tMNu@vimUrRI3V`Wc$CW<^`en;Ld_>% z&jHcQt9i+srg@d-kndXL?;?`Ii+DY|@sc|6s(V_g5A5#7Ox{-)o;r2))T#FI<5!O# z|NgG+*V@2OPqmxJo6X~|?%F25|r>O5?BQqHh_2HO4k(7kDevqBY z4jTvp9PsOq-iA%*rky7CpD4o19vFasQ$%P5It1(lM>ZiDF_3DYYa+v_3}h_}<2LaZ z&~x0fm~H=x>XVzGfa_d(;zL0pCo-rw}5?~7U)LwT_YW95~v$GCOf#tbJ)Eda~?TnHHe+~*(FO)M zvP{MdIT<`#=K!NAEdi10Zw(@GjnK{abv@M(8hhfzD<@98a)m}ltwuwInlQ!~e+p)n z4a+njqh;V6Fi2#MVWWu0i}s3Q#4(23vmXH2|K6P5t_@YQ_<68a3-D{d9uIreLVEX&>{)Q-CgKuV^`W6 zUK{Q;t{I-fXY9yL9bzL>!;OzTu(ba&zr3S$X3p}ntLg;@dl}8f4!~gy1?TpPe^zIA z-pTG_!)3m2KijuraO@&L*7?4D@QGkr=RR0PZ4IBbhlP?KG%P*VV>E*x)_l9toy2CN zU=1o>MnmL{4Fle$TBsNaAxh3*%#47j;@Ake6h4Dzj;~E4ZLk+aKXk}vfkVJJjWz*c zryS6wjtM8953T8GKG8C~04WU6!7?7QJKzBGXL7k;1T?BH6c(mDP&^H&dlqu!KJyN) zrxx6#n@E_=rse=kMD%hLPJtELGt&z#;eul$A`hOh8p0Ra3zv!ELid3=ii=o0*^@cs zFWy8vI}eZjF=Z7kfH)t#5!`-Eq?7^egi7kT4(^Cv(a_I5>qttuXHWZ95Z|Nh;0$H= z0ekF9X?%|BR?>nGt`i_Y-uXM6;~o=h#o=JQIRJ`0{n>&TEzh^ol{vp z4|Z?{OrQ7XM*1=Hj}Z%0!Gay9**{=^ATJ{M_4GD<5YjP4IRIEA(V1@p_vvIuq~YqI zSp=-mSe*^j)MBYrRBHpQUN05-99I_>UR_xDYQ)?52it7&UxuqIi4czzgo%~a5S!Jr zPnNEguF#w3@+Y1s{(b*rPZs}vv9C9NANn^f^L2#le{?Kq2yn#qAc~)bKLh*N%haN) zV)Fd{e)Ra&o6+OdFGH;0S@;{!tEz5Yw(i?aRQWR*VfF*Z-|q#E+WHd-kPPvse-{)T z_BU_itL)|;*oZ<7f#tibTu^>a`OCdgh&UI9ihy~*Y7jKqL%fLT0CVJ+<1j$Ec+{a* zp1CU}AIFXK?LK1x0(sM|gIva0EC9N&m9R~-GZhZ!ov6g`+cmFjUN>(nGT$)_$7c&u zJj5VW(FdQx6cJ!CRC{HnpOS-C07)2x6>qPffy&|uR}_Skl$(x`DTTIIuBOz4r{xPg zDmvf`B9zOPAocIx{go%pS2nK<({Iv`BZLk4h^m7%rh>0x@M@E)>$j46NWVCg)7!^g zQ@azuELt7xGi)Lo%Hg~qj|!NBK-_ttK(K&D3gHK=nPoL@uYhuhbv*fpC0L_4511Yq zmiRavWbpRix7W+8kwzfZD8qI#+(;L~*CwR=xb6&Ovt^91mv3&p@{N~Yj&ui*gRlxI z+erRb*wKuH^PApxBHyJ z>&OETf4tAuqFexQDH0_3AJW5+nd~?_EyGv<7Vsl_2nBIm;&~6xA*2G)_k14HHVj?l zPUhf-duLzIh1bGd`#fIl_B$YjYZ@tI$K_x#<=}1$FmS)H{-*i*>*oCuV*t!Rdbgje zyaDdT!^#!q%gWc3U+axqU~9Le78yhcIhtEKOtZ9$CY5*!Y^e-I2qM5A0>F%lXw2|ZNCMbM6(lt`1qv1@p04H#5OJUen3{m402+lb4VFnwIFitgp?1ngrdf>HMH(fLE_RCzw#-xgpmJ>M|U-E2hg;7xZd)1n7i$7g!;( zOaOVp^4PmtI)tAcIwAuqH)pLDv7k*%2+0gE!$;gr8HAiYY!(J7V70&-vIgwjum#*v z*MK~xgag>bNZ76m2S4XI!%iguo8e|~U0rxCk{ddrtfa0@c;m#;7j6aEB-hl07HVt1AmL3RvX$t)va|juHy8&Ph_hBx~GCbrh)=OJ+-v!ntf~%H3gwxh zB3hOk19>Zz41F5}c&>%O#*i7(z>>y12is34%<+11EIHIv^G3?HpXlqsFZC?M)mt|D zd73z7?Y0~MFmLf4-&UQ}-ts^v@CHjmR^H6yRUMw3nFfbeL!|HI0II@EK-85@)b}GX zD*VO!s$iSnbyElSZOm?3LvJ$GZ2wqqKe}yS&dKh@F`=~Yqrfs}z}h(i%k%(7=}EFn zfO;wzBQQXKXt9G%z`q8x8}#8VAgmXlKz+zMA(M@i38EOKuU>A2)eCK=VXDZh37V$x z`fCtq@Tz|m(sS+Qg#`rBHTie^%9SP#QEHIU1fE67SJ-SefAh$r0<8p?Q~y^x57f{` zz(#cInP(PqZP466XdRTwXR+iXFh#5*?u$^JYsW`!>iR!|50S$&ACR0Ms16@_tr!&| z+bMN`R5ns2$N&>{9jT4x$d&kj{k>vmY%eABXgFhjh0J*WgptnzPw@N_oke{ zu4Wvve0y&Sh1xfavEG$_|9cpPpFouQjPimUf0&T~GJ*8nG3!O55V60H{0DKffXxzR z08dM4U3|#-G4w%GW3Vrq1wKVD>XyDn-?{3Lw~P~D6cM`0A0ZcvLI(s0@Mfy`q70sf z>p3JEz>WZB3zk7KHvl$y0tP3O^g~M7Y4EjxMhpW;)uXhkbw&!);II13>0oSVcJ@kk z5OBSn1};`Tnn45BQ)V$`T3&>N22^i6#qGiLAta+6-v>0;fW~x?@OZw*#CaFy7g-_` zGt_jmR2nJfp!jIIim$0o0jdzLgcWE$63(D!&J;#ENdIFVL`fgb(%otLpixPOL$wl; zo0+3kzGS;(-HK_G&OWA%FH+N_QZ1 zV>Yuv*)?TW;-UE9z(D^XyS>7`mBLVOZT4|rj`2MUsh5abI`*o;Sdd-L_Xc?MHt?-5o=W|r%qyDU+j zjJVvE!6661{?cvxnEB4_csO;M9 z6@P2?Jf>Urc#1z({$I?S#kvt-y2Oo)sIAvM2(CfFgODR^0sIMQNal?QADuqLLDu>< zG9)Q6a0pY1P3}A4_+*5sSak-Fl9whH(gt?8#XOJcetB@97OCdH1gpg4X1bIe5N4w4 zB|^+@D*R0$#Y+$ode(+s+Q>%hI2CIC*Keq5VzF>hO!4^l;XJl_ym$mHd3|~ zT9aDzedYc59g#`lgd!x(ojUbGCXEREWb^poU=+pW_?4xlCenAcn!!rE#Eog=`R8vu z{Zs+3fB5_kP`ds<45alVSC1UI`j^##0aya46Nx+j>}KA64*7ty@hJHBZcwv-NM*n(YTWwqR8$xWevmc(gUS7I@Wc$vvBI0_KDK+uTxWKasbnIXnMvey zDrpmB-~VvZ|89gqcxDy3aqv$G_lAgKq8>z1s(@JtrJTi07>E=BiU-LsBFP4J zBpFjg+k~Rwi;`5ZD@2rP8-pzl7)Ozf$D9bAW%VM+W^U6JJ z2pk{g1GLF;{t4Cw^?DN6pU&OvKp7L8nOY8EJb}JeYw)WyUfUgF{_^hN^M_^-1-3b@ zbFipVHs%ckc3_oC2Iktjxf+GtjOC1K26Oq{(8a|t&17hL_0GwOIRmba=4S@#_(?=2 zB_w2#PJl4t=P1s+ z7jbL-Ks27WOUY{x2}xa{6D0-;X9rXFm_xp8 zeX4;}%FnU;keOgw5a9c%>hJ;a4!RpePd1AmS41pvMxJ zhRvH5cwgKB>NHq5jqn{D+$z$Se#Q3>+CSfb)4FyE!wRvzr2#>yP8>i)FR>Dt*E*)W zsC-@db+lXrg@(tY@En`4m^0J#+>}Iyl_f|JhLY?pnhx!PO-V1q77PzjFQE>hL=bS$ z1X#k8G2SS}LHK~2nvHMC^)fI`kJe2r>h(8J)iTiA7fIG6@m1xZo*eGi~R zlVK$do%Sv8|7dZI-eC*BrtUgy0N*if=i~6F+(3ioCC_V@0~K=vImX5St)Dbcu@MP* zJQ{8SGU#n|0uf2GP?sPJpvR!iFhe~pK$IUQt%p7WUi^0xMMx^blzj(T^dOimHccoe z$`U5A*np5&5bO!D_5fCF$W#SCl}~Hz({Ryk*VmHosQHA3u&O=94`e?{Q!2p}bt|qm zFaUB4F-Ji^9!H>PfHIST(%Pi2KW%sw+g0gVVhGF^&}<`#-VTq>p1rdi3&D0{-GC|HLQslP7h0A0G$hzqgH= zJ>$4;j4%E%SoIOm^jTW_iQ1K{inK8#!98_C76PMznhr_@CxItL&P89A$!x&3K-G}U z$8a7R8IzxZSDRi6Gcb~%Wt+&HrwlL6HK$lBxCX#cGc%qa;9_KbM5y(=z5giYoq=fT zB=YW@mrFQ0NZ6jZ12dmPui!?Qod(@Ihy*++*lNa20MM*ek+RU#zoHL=;t@dW7lt)% zBO|B<1X)p@7eEjwmR=;=USfaJZ!(a33W3@eXstA~EczhE3vM9;q$FYpvVF~b4b!7u zedU#_gf}*uf2zIt{jbQ$3O84BiQ^_n>Dyozje~_n%+0e{J>v@!RVN)WjOLTJSjs2# z3R)C87&LzY0xl^L3VgAa2Q@QkFiHKEt1=)0rv8b~>7h=sTZDc>7Z@}xq;Kt|GC~A~ zuizP`52gRjX3`M%Ffsw(5L>~r!N9?Ds1~3Kvj9G7d9?BE#^}39Nm%J(B@zX+_OWBktLH0a z%PRYN(jBaKiZ;@d)73AF|J4WsX4#VB%p;$H?L`*`oGGqndb_M=bz8LM7e{bVLk=+}x78;NHD|uI{X0-tHF$xnbypkCM$x~2Xk4SbMvKfQ&kJ=6x zH?TDw`aHy1j%`TqgJ4~4Bct~f<-e7^AtjR-#j!3>NgdVcO-2q<<&E#5&UB5bi&TktPEV9Ao1R0!x(5oB!QE9v9g5pMlzJgC*XDuNGIfN z&15eHRj+{ANTq@M_T_>?)X^A8DYIs6#6FWq%1%9kAhOQA+(Q z5x_GRA&lmLq`Bb#tAoK|@CZw_Fsgs_Hp0amR*2H^Ma1c&FA}Pz)pg+8>gcCj4?mX2 z@+%sk}F^dwlG2A(k= zjn~UnFiI%rOf2{VvVT8{zbtdk4bk|>q;sR6bpGv|N#|?-BPE>yi|4-LQP$b}x_4%G zy5QfJb(X8}d{o*w&b?ur-hj4^SF~zK<`fpR8o}IF@T5LuS&VoH_6DT+mDOK5`#0`* z{PRyt?7pQAKd4tKydHo2lbK&y{mQ*}KK_eO)Ne~Q4B~`pr6J!jZd4jP${*m4D#$e~ zQ%e%v5VI{YE@o&XkS~dhLrispl+zS@u&D4s@H_!S@u51{2RB`!G&uW`gio3N{lv(i zVB=hvH<4*$29TU`DidIK8iW;cOOtOM>INhTuzmu3ND%8Ua0ioz527c)4L51J+VB9F zyv#X+6?G7CW0Ez}a_^|QN{A`=BGJf(j+;sdEdl2=z)+6C{iP zPzHt(P9T{`=m*&fgyl;A1L#CdRF#WH#nCJ^6K1aBT+$kp(?&~@_exQ%bb%lZWM^@r z^joMKNCA`T>L)x%+jbgrv=9V92;C|aL1b}UBk?&fda>|Q+DH^>u_5F$^9lDd*e8K+ zMp%#vFBQ~X|BJLv1CpP5WcolijnsqH3AhxHdL6@fNcV6-J5ltoIfRJ`u3pJI)f`;Z zG>3zq7;h!8B24I%15wB&{x;9!dK-dXD5*XG8F~Na=TzE)>*fp$Nr{(I%+6H#6 z77hBLYX#wCJLQ7(!R{)V?LN<%>{|u)0Mu*pa3e}<)+2D|DeaM&n*~Rz0lAeH3;?0D zW#$!T&mxdi?Sc6L4|gMGZFYtD?=R$XFP?Id>;>i{p&d;{R`In{CtrQ()*3MIe{Voy z7LdjIIIZA1Pb@?F!>nw;SMx}xgLw$w7EH+bX_;OnE~1o`Xb&T20S0LY1s%8VC^Z1(d;NF zqS>692(j#58{80LH24YLhC2d|Mm}kS#rsK9sFE}C;QmAAaW0v)}S+Fyg*}0?$a9< z80A_nqcXT?05WqbCeuS4LyQx`7NR2dc?lloC~>YZhsK6zk1mW7&jKzwLReawajV%p zaWfnE&1Un}X7jti=R8chL3l-CDe?_#VZjc3I|Y`efq$wsmNga@tYVXByF?hnoFGh; zBwhwV5jWRsOh-)+3VP(3zlx=EFijwi(XK;|$hzGxv%jaMW=2jlosA^?MaT_E6uOjN zndF0R!2Fghe3b}m(zVf!985ZDGH4s&q(^P7v6oCnk2UjKrv3D^ZM@WsaVx9F*w^v z<*Z8eqcmGH$O0-sgr>tWf#N*RCw1^|-|guqqcDuQ1=&0HVMUY=S4UvN`$XRGFnqZ2 z*YNdR7SE)>PyO9q#K0)V=xuXY9=ErxVk_0#*05deZIkD)r?*Y3fz0)`ZPeb`+jj8H z3$X4?vrv;$Ug&LeU?ng2wpG-Bv$w5b`?q`BI@aF!Zg1N_{ad|lTX_^SY2#~xx5^&B zcPBnr%*Ms-hgQ#BT3_DUUA24r(bcW(wT+9lsfqUP>SL=HSGSgTR#$4LpRH|Q zJ~zFybGCMNYvV%g=*GpJ)%Ep_+UC~Ar&iDGOq}1@+1xiddA3(Sac1KJR%*M1jN&@5 z;ti~%zJ~1$)NKQKSXIv9*g8C#t&cqGqrUwpzP*L3tjVj@u;Ri5B8rbX`xwr?D8I1` ztYZ}`$knj2_Op231_%8d;;J3|JBxkFA8(*nYKXDuKI!ar{M$gyrabm3)SN;61au~S zYZKhyN&Gu|+xZjnNiRTZWZ<~#6PxdQtx`IGAya@XkAR6lB91xCWggUJz(R(p*(}8( zmS!22WjU5-1y*DwXkhYYY787v)?kBJ(_;X%7aQj;w$7|VYPNbi>#JvXTGQ6@h0~DCi)U8F^2L>{jkOhZd2>@oSzpzb zcQ!6q%R4*EXU?}4=FR0xD{C9Az0>CDDJtgkI(hho!0u=_D*YV-aUP3y9H^!xYL@N#?H>p#>Lj= z@}=!nr@ynl{OrvG8=qO-vd-Xt%-LFQO}Fhc%bVM+?F-B6>&}_wt)15P+6B7hGiP=# zyJyZ*&FST>*35KoXLD_}HPhL>GpEbbY`pKZwl*$ZToGr^ubz1ZZE|L93q!Zn-fP5L zi8JdPmsVOU8=twjzOlU0+B*}(HJ3Ky{aG91ZF6~hyVdR_Fy42zHt?idtqU6~t6LYH zGh3@GYdbC6=Zd$oy1sUq8tLrv_KvxFVR>!6wJ_7)=vb>)aLujN*0gGZR45M zXIs-96YU5M)0zbF;T9b~ZNFTXS=EEF7)n zl@+hIiEdckS?%w|&1`Msiq!AZesAl{#^$rF_N=uHX~*5IZQ9$PzO;JJ=wZ zh_`4w*|Khn8d=EAOZdj6i>apc9zefoiQ#i?if4h zg!YuZvvy&%wG4A{LEE{EQ!ZUNy@lbl+?tv(E<@RGY}ub#-ocop6YbA#Y+Ptoowr$(V#L2{%*!IMBGO=yjwr$(CZDW!%?|06hZ&lsZy{_uJd)KaA zwX3^&xyp%&0f2yi!4C(3{jasS{onk*{{J81N-9DC01)aQ<@qONq6qRoa!QOW|Cq@C zF;#YDVLc;j1G|6B_n$5S0El%k+D}AND|ZtB0MrTqU|R(M)DutJ-ptI54SoXvod0>5 z{)rtVdL%d!563V0TF}nc@!$O1z5kv^3IG7Rn^J#c zb;~r;|E;gTYsjQuYozaB{{U^UJ0VFoW)y3vZ{Q1vlWrex)d^8+0Q9k25>M<6l@ z2n7L9@PJDI{-5`Cg4540$vPKb0 zP}^QClqnSiFf#y6@y~m;2ySyAk0rX7FnE-x^eZi`EsKSfwMD}$h4r3-`{vjM8}-bC z^2-?VkP;MJfCdYiM8ZTe(3OnEAboU3De?FO+2`RzBz>eUC#RO8G5CP0hhm^j;dM|b zoT`{iTTLw8fu^)D+`^)iTp0g}ZB_zRBi%eNiGBSnH-Vx3EH8!s9a}$^IC$VChGm!& zRhngpjdhY`gcp{sevmL(!yxI$@|u1Eee;?@3g0u=ZY*gu*Ipv)blYw`ZFSpTGS9X9 zZX9K{`(6^q_Si>AC~EQ_i<6S$^n`3v}_K6zaDrZM@3;B~7~ z`rvhoQtRM#n^OGXb@Ni4;C1U#zTkDsQm^23+fvYAZnIM1U~a2Y(&7?PUW-zrU~ZdI z)L?G&Ql(&S>r&QWZp%`~U~bz|*x+`vQmNo}t33_DPuM9{IOiq#6*%WDc@8+|1^E^@ z=M8yRIOi4l7dYn~c|^FUS@{^ar&W15xTi(=8MvoSc}BRWdHEW+r*(N-xTj_L8@Q)! zc|y3SIr$v8r!{#!xThug9k{10`JZr43-Ud1KTHq5fJzkzPi~o2ozSslEA9lTH{R}q zNore5DqAW`e0*Mub4!kolmEVWco4E+G6@7A5|%%JjZDx|!gqESOhy6?T{u12AkD?s zAg%a_=?8y5Q13#+qYHNAT1=m#(Nf*OQXF9@z4>f*v{+O=o>`bib@RJx^8A{MXbic$ ztZce~h4#Vc`_Ak8yN4|>PggC95Iby+BO1437&1~kiW1)Fn7FS2!=m8s5-iJkvZRadOlHJ~ z`#RlEvK-;(R92>em1>r3RljyP2rfTTnfUQ!ls=*ie$(}RDD-wj=olwTf1fUyJ}V`g z2<*lN?!caNe8^O@$7ss@&qK|$wMc2~VZ=zU#9(K}Lwj))YStLoJs8(r)_rUKSSJ6S z2XEIs2@=nRd>bVO<&EZ`?UygTn2@@JfZwesh%Aw~V)}Ggw8M+76K+_A36G0^r9C9y zdcuYm>{-4MUDMo4gJg4m6pAvP$_f0&zIpE89~aZI{1w^NXJxr4W-)SIhFfw7@wq^_ zvC@2zJVaYYio(zqNp8A$b5Zse(Evp+MQ6bA`fx?beuuk z7|)p>zlH!UMB_F}-BvQEt1WUW$s07I$#=VgC3gONxXo9M!!!JM*h2s`o85cf4S3D^ zET1y)+TRiO=V<57DL>I*miD_k&&CH(u%XBStCt}wtKUldYLgk=OmS{vw4GyB#^`I6 z$Q`AB!nu_x^WGInxi)Oo82!#yMaD=yb~p1`wPg-oB5*s zZ~STUamOz6#V9{!=4<9{aExzcukOMiQ!Q5c9Zo6nhAMo{4Q{yNdQB|D>w$Z9sv$LQ z{v{rLHJ{lV7=}mwE)}YvkSa>1NDi}4XtI#eXe-R0yNV(0u-NNfPf5%M2BQ);^ETO1 zZawiFP=?fSDh?K@koV?eK{u%WMIZHK%|@s%^9&q1!)~J@fM-NP);8Wvz9F!Hmx+pK zZaLkUBNm}ZVyEW4(Onyq*GS3ZUxstN&0ZR#3#}%d@C3FKoFWY`Z6*-Ave>em`~aG{vE^|%OXo9Mzk0?d;`uOG>9_}EBagD{c) zcz>YcX5ivx$n94lzlT-)^qXxsB^rsb9QRvE91{I!;sc<} z1#(>~dN;N)N|94r6x-{KfT1y>!hTk~#AihkFR(P>?N+i*hF%i84&*B^!#+3+Th(x+ z(LbEFa&>?H4yj&-p)9gs)JbM$CaAFpN>R&DIu@Lr(7xaJ@Qr~}#zu{_pDtOQu3a{N zb5Hje24Uq$$q(8wZG^c%+-|6D(}LVq1g;+nCA6N`fx6}og_~A_{{cl{-z;e$SF)Y) zV0n9)40Fp?s6W9#_POGsbY(0N9I3gVm5ii@HbtTCJN*rxgKv zRu)Y^efvOfwuCGm+bv>uBX7a48f~9XK^Vv+8`OiKIBRQUVS5sLArMyPvOw(QDW!ti z2d6~LL*Bd2r20*Fa|#erQpx<=`16;D4nvh}B341;9PCDbF-5xw82t#Ecp{fl!#Y^D zVR7a#1{w&4BE7rUst}_yAcAR9g~s6%D1{lm8Gt^Iw_+B2A&0XT>pq+Sf%u~Ug98G? z^weGsOD40$XY8+bW2JExIU;!!1EbHt1!iP+$)bL`Pj*>PNc%~8%5gH+43kJCadh*I zRCX(K!|+h`NonZWAt@@@q_h!}G@B7z z{|ZiJa=h3al06}8NTZ45EKjRnA-E{EyP^kPL2*&oWG#$HNC&L1n-+=#`h47%h=!)J zTmQ+kdcgNN;CsxiaFGFVggZE<(FhTNAt={JQ(w>ROA*_3`*{f`A)ATqy7J zo@Q8lu%&NF1DSK$gDHjbo??!H^!YDreUU57riy?Ug!8}3>M9)Ansf1{!nKCx3(Tag zy%3#dMo`~-Nf5klI2?``3PQ3v+~DKbca>q}4w+0x@U_UbAaCqtLHA@WMkWq3&!uKf zV0TKWvGrrx)4#>%OI0JN=x%cb??xTH2HM7_cH@IGzEtQsGO;oR4FiWzX55&SYC30lW7a4FM-P%kg2*`NeHwx!;%_q7sI(> z;kV+=Ba`@rKL;he7TvBVFl8u9Xfra6!*mUL`y=09pr(UM$q?6+^l#7%>-1e4?ukHy zA@MFouzG9NRl~}(Dnfh5LWyjb-o$fdZI;DIzL`BTM0SS0M1fMtHpK2#>-I&BYbi!( zuhsgfmE^Va{faK`*1oqQ4Q3;+peQ-O=r=2(BZ91ETRrIO6AlynN@(vq4kT70fw=-v z>D$N}E5~#uUqgq70jKBDJULda4}Q-xPHzA75bF+i!HyU*qtrGD+)gPDe(VE`#2-UE zW?3o`$e)1yAgHB`>1(vkXJ0oLTFwy5R@al^X@o5Ek1yBMM?T_)^^J^`*YDpwoT}_haZsp2a?ahV zJQvW+XtJke(Vz?y&!&(@(al>DNnOA(C?KbU%_RJ|`Y87`Vggt(^izFf%Kef)WPbx` z6rmtTOX%GWjvz2^Q_6|RHHi_8_I-Uqgrh-RV=@ns8u~^$*fWDd6#Xc$9rmGaP3B$I zQG!h5Q6p0a>j76hHcjL7TJ4z8}7GEjU!(UQi%W9 zpn0~ptebp~jAuuE$0!)ti}e%V)fXRh3Ed47F9A@T2^r?(IF?xAyv80OlRHb&Eb@57 z`z@P&V`J+xGnQgEDorheVTdxTO2>Le;m@%*9w4OsXaCrv`bY+)q zYQWuLX>^={e6Me5ys;mlF#*Hvzy*rHCv@$5CN$6j)U$G&YaNfqRj7C3S$Z6fG5}+{ z&by4)ckWx!=yo*+#x@?~=%W_e{vRJc}s7-|M!zX%5 zGB^F=7~C$kZf&!7TB)^IdZs@Y%hcquxLfM(&WDGk7_~is+cP>|*KHLL%Ol?mp9jGO z(cnvJVG_GB3sEur#(!gSx=*rWdLETVq7A(F_=I_RpDKd6k4Jt&NYZ|+Gx*rg zy3?GKj>||E=(miAoae$0FM?KZ>6QV#526P3!rwQFg`fa;MHvpiYR!tDjNH>nH|srb zEo>2H9yh%yGU~aVeE-ZV>{yL^?#f4}R(80Y0yU;Ety4t%OuUN7>3eTK+(#|#x~k)Z zGBbR|sgB5C=;lCis=_4G$aj8F3&qQM$hUwIsBv zq36a%^?wJMEyI!Oc-!=RoEpU#H1-~W=2I)&DPn=D);>GzJDSKU;H=*&ru78jT#U4= zGta2Uvx@F&H3v;e*ga!qOi_L_)?R;A$SZ4#|h#z4cIRp@2L1T=h$StAoKyDfStZ~MMe944D)XlLc15Yl^7@>$g zd2yxNNu-vZXsWl4tl2iy#S^x>yFgoRgavN;S6Gn>+OMutas-m2zC`=8KcP{3f=M1< z=4$$yf`rmf`HtKirLhfPh{)bRBc$TLGLWnZMI&;C=k6)4b4zYPbOm3T8=Da>>#)od z1Wv!1Hhhg{4LlpJryo+L_;7Pdrt3kYVUwpVbG!3??#$;f`ZfLhJ3PbxcrIMR$k+A9 z#n~QHR_ir-2XZIx95Vyw<%~|ZvY+#modFpUj3{fIs&$+J5izIOTv zRE=vMBjb9laeVQ)Sjb*slh01CMq8k;SsNZjX%X{`OWLGqAllS~F20Gh4HXJ9C*?%) zV3w@x2huO0j;q*}mVk2ycwUa-WliDCig?-W?v8Qo^LT+^8*Ppm!kkb~F4s;4R(!Yl zw1aoWXUkz~{ZPVh;li3vM5>)Eaf4d1Y%uQCRaR)6!~07 zC%2Hkbqc7;*j8<#9ivqT41CxICXoKg>`lUIp-lQ1^Am21(h>n*ctZ~^O8LW&@rPI{8n4*E3-@!aX z{CD*AC%R!)n4q8d_w_aQvtJJw)_uv1k2-y9zbvw!t=RB~pj>zU!|;Q81R~Lr2qkKS z2($u$EBhSCtod)Y`*5Por45J$kVy+)KN#L~Ea>Qzp zMga?i!DZ(MhEC`2##s{p-0#~+$xJEGXfPFSR#7rRLBBg(@csk6%k+B zFN$6iJ{m7O_Jh9SM#({5BNg$Nr)Y4^3H-pJ0`sqbH7|ly4Uqg~iFja|%%Ckc)j27E z#6SnYwP_?Q2{(%dVr!yvL{@}!3L4e%nUm7hh2G)YPB zC(q{_K?!L}+AIylI9*ohh4m>zUe&UF4*W}lNlm;7N4 zzF;wK?#x~!$Oeo#;~eD8?ECz#Y8WIWIeXXbPCqR)PYYN0zJGg1!mw8(Q@nR$P%cew5E?(yFj91& z=Ug51D~2KRG*z5Lomn-GnDiZQs~r}Ci5lJSjKuY5c!ShDn$!J3CnoRl zy9f={e^;pHODnv_AYA?8f}WyUM_3E((NE`|N4Ey7%mC5~ZR7*78ka&#thlltq>`HX^<7<+|szr;| z7UVh)rEE6u9Di(1clnznNIee0Z_05+Zz@PCaO1ELY>=H9 zY;NywQXdwuf8xhE8(v^scK-a`f>*v_RoF?`LG$vUGTl3T`%wjhS_qP!ql1n^uYgDB_ELo z5AkIL9Y}x>)e-e_o*l_j08c8vDZsMaQh6r{luPfWUc5T9E2fRv{YV_^S7cnEN1~~# z(lH68_4V(w43rvaj;^2agpiY|v7oV!B$eDO} z`e6f&R{wGHVa=%$>xVBQHDW5h_K;&weUE3+zN-uX7BdvM$cOD}^Rp^xX_C|`&*@1} z2z_$MXIE9h(%M%5J8ruFrhbv?Ki{M~0_~oS_qvHZX>=_aYX;DJ54yb8?LmhykD_L< zm(Oa66HRNAD}h8lrr;RL7F+1sLV$ez$afpORcs=9E5#nnP~Ub*Ifk`l4XNY`25`n4 z-H|X`E??kke>rQQ&N8uwv!A3v8*q~V+_k*7e#qB7=oWO5ga~Gr=k3neag4<{8^61P z1_S`_@%D;4yy443$TD44og}j*S*n6#H^IHWYaC|C_@b2m$x>1EE~cy(T8#8(1!tYn zI?+^fpq(xG3zm+i5oIowgS!b{ueXbv_q5pa;1eREoB%NuaU;}r0cl4r)p!IcBlAg8 z@0>w+4$gf2-ZIm1E_~m6%gM6@W4%Y%S9#^eqCQo*ysStf;1)DqDh+j^5Eyfj&k&G2 zz>8>LLti!Qp5%JL+X8w{t!>n>>B?i1sC3>OER}6^ee~t5H`C`Sxq`LH#Yl5qOV8TYtYdWpX?Rd-snXI?N*#f-TOWV7hw1iCl;r(9s{If&fJqA?x<5C+o<3TlH4$fN` z{dwY?9&Uu0H$7$eN2zb$JTrK3ZD6ujXrP_W*0w&kl5v@c6JlN;C;A;PGLtRYQll+o z*2FuWgs;qGF3;ngSn=E(2{cWbxzlGd2-pt~cPY9m#CLU|9g`fd7Vz z#ABEFt~AV9o%cAMqFW8X`WzZvm>g$12byRJ~3qcLP|(#@A-}Ly(BbF!2J}RIh!0 zWqnR$Sgu-z3&t8jRHm9X{>LM^v9mo;(3rx?m6H$zmgAe_Ne$`2Yd!(sGgxFXG)aJs zpht)R#K<}uowlKz>4C(GQF^BB0rA0_W`X03i*AFB{A~a{7(FrqXR%uza#2VIB&9Rb z8$#=XT_)81l9PX2B~2l8KfD(;#?FdnK{R3Hm?9(~K&MkEX=e_M@@uRnCC-UNH&~{Zcc&m-P;cLdks;g^pjCsw@^2Z9FaK{8} zV!BJ3y6bhKe9nom4?vd;tgA!ZeFfC`rurI^uKAH;&lY&dE|=S9((@9{;}X*qs^{q^ zJ2JCxnnRpZZ$Mv!Q7KY$=AG1)7hZ^nEBkj@aJu!)`#ac9tYbIeS&*%UFDW2js=vt(s!F@pLs zI*rf*(N*yAPH=&hT&EVKz*g!p@&ZEHVXDZ zWE}j#V0V&)LcMvBLAh1gIQ*2I$Giq`}n ztEodp1<*9l@`Dh{IB=ZjH3YV73Zh$>*0#N^Jw8s1Iu*R!K&!qxcGF4*05)TY{Utfj z`gMOV529$JBF+b#Z;fJ>zQbOwM=rh#`CEqcAa!J&x~^9V$I06O=WbBypJ2nPh$~ZD zG$Y5CcPB5a2SqjgdIA{Ra{hYclb&;)xB3O+J_~S;vUomSWYLdpBSLU}$jHx@a0uU8 zEsqs=mwdIpL77YhO#Bv}cgI>X&9gD0H~A-_^M{SThyt*@^!pYZ-;N$d?kh!o@_q{6*(|LiXMc(&D~)vyBA{aUYH z=|#k_G)?V_HI}KZReMQh@VQu0GcpM{hH6l)b9+oN2)dtjSsG{L@3%^HWc!dcoY_OY(kez9i(Wz(Z=C}E00*N$$9_PsP9g$DG(8%? zS1^^!A{xV)GfvR)h+77vcg>Gp(Et()pTDv_w@50>324u#qGYDd(ehs3Tnbeosa4me zf8@m)3RbXLPupLOG$}k`57<4a-fGbz9)zO|dSKb(=6A)?b{{-V??b} z#KL4`I#rY-1&~5ng0$jbk8(#O2C-_<--M5Q2Hm}w#?4{oH}!-bCa6`?h^M8E@yaq> zdNWEQXGlyMpdwfbin}Wfir98t!h;WBU$>=PeK~;?s-eo@vAuZibROuCW}Jf3uv$t# zC~BA2^~tkP&F^i99Up|GxK*a1YAA{%osbf0TaQxBFCs3x4>#sxe+kf|CLJvLi}g1i z2IIJIw9eh`h~7{wnhmqKyJJg@wB@Y#u6o1El4v=#XTE;vP{Z!0We= zo06DyMu=s89oV3{?_5wiH7uwmo9;leu@GI|7Elh~ZIYK!ayxLAHxvBS^XF;3KYwON zI*InqX>+qLy@xC}RhQZ2D*8ZYfD8FPeS`#;2$LB9I)J@7(_e~%eLPIa*_`H}N^+mo zSj;|A9sor{)E4K(8aVbWSZz4D@KJgRjPe`W(yMpa?0=Y)JM(XB=re|p_{cHWz{PM4 z?ZK>CbfEPg`l~#i3p+n7`}>KNCz1zgH1Q6Rb-IDLa(7jh#5bTNWd36GP}L}p56@IF zxFRoYbX!Q9d^F$PtX)BWNW3CbEk@aD$D*V;+*8~JG4jD1UnTb6oiwD{ML8Ts%Z~@U z%)z70q{>ud`CYG|*OedeX6OlM${K2vc;jnA78aAb6_(VA&W)7F#<~lV=Dim2nu17Z zU>6wBjb;5&9)DT6AQ8gogH=)l`Sg(5Fok+0Ng3sjsA1G$jn-V5P3(nEo#b(YGTlbA z{jKF`J5uS>LA1hzr=Gp2p=!0_p2FF-R-F?s=!;wVGBeFI=AU_U>IvMWaSc8d*TNj} z`x%cE??sr_%;3(sIQf6*41sEu2aR8?7t3{ppYI`#H1#FMb0!z|C9^s^C(_@mqR=_x z#NR%4H%tCS^Y4r0jJwd}AK7(!0&DAROMuCzIA)(WhhLp*w7O)D1my}M;aFm2|97x2 z9%b5RN-!!rrNt0|wyj=r(;S{AF`jna7t7;)Ad5TXmp;(W7Zf{0}aD7 z13E?{l&83w)ARCq%je`-riYDDUOSEPQ*MM2Lh$7EE<)U_dK^3FBa_Az;4F+$uYUSV zC&^8(&e6c28+EI_Z=KN~Hee~z9Wk`LFC}YJ(yv@g;)7yqqvWbH^+ZLYDAlV%p#`JN z1`c1alru2ikTxg9_8Aa1tW^6cxiEqV#VT)r(a?+5Q7&8jr%eX;YI=eZu@^E_ezgOQ zVYyg5mU1f?-0T9%h@pw90Da6wP-G>{c0Oa;{`L?N%{UkGF%pIxyd5@vONG^gt7!>Y zJXT+IDv7@pLJK-58SC;xtmra;{;>b)P`cIf2d2!$nDxfz z_nGi+-qOvMKXRp>MaP z)b0R)3M8?r(ye~Yadtargz3U|O?#x;V1F2AA&Q4fZ9753yAWm?QS$J*OTPhl#;7y$ zLwW>kR_dtFiBMuMi}`O@pxEc+mHe?%2#MKs^{=kJ!uQF-&VAEJ^EjwiaZsQSC6A*L9Z2d%F@$NSgU zwF`b6;_#cjo`ZUS&W01@7I&X!^#0_LzI^!+^SQpypDm<(foP~xt%ul@ZP;QX`cb}- zUObDMi@e=bHEPdBWwh8nDny{oGZyCy<@WZ5evR&b(O`y>j`$&-dA{z3dm?Dqum3WF z9g_f4rH%7#{yxqB?h*(U zH!e;IyVxO)+>mj4z*3MHArs7^`r>Deh(BjVA`p?ai5y3*Fu4vrE9$ROpA_*-^M$mI zwZF$r5o$oGW#*t_Zw`UPn|9K~<6A*>jaQi3V;AfB)%<9*6Hgj^5vp1leDslQ%Z{@N z*OuUlb|pr2a;SqKpKL(l4~eY3YEH!L%pCN)-YlywIn*33EoY5)tFEwnfcHyKNiZza>d&y8cd9QioLrBd=+8s2 z(oJ3OiC56pcxJo5kWu1J?DFV*PjEM90>2NWOKkcei~oq}m~(_%(@?T$h#LoFP5TM$ zf-~ka_IN@B%?k6UL*g&#lzhbc1vbV>SVY!TnR{f1w2-na z>Ub3zmC8&e3>B@^W_Bl){lPCqPS0w_)m)tODr1Y)lqDO7;Kv!Jh0VBC*Q$kDxf!S& z@^29sHnm@fnz>@YA)N_UQ7WfkK@h1L8X=>9YwuoVxV{56PN&aT>943 zi;-u+<{AXJ(=Q;F2?A?~mlzh?2n6gu*vC;i0E&)mPFMJhe&Ap9DRvLjgUsO6-aF)2 z@W`<|Cg-$h#rqydHmKfFc&k&`2lMqiux{gb)Nb1ub&CYv@5CZ89mnWWq8R)A14+MK>X;?dW+uLcIj$?5Xdn#n}o8jHrOMj{7n|n{np+$2bLT$JRqP8iPVnM3bR|iKLVoIr#29IPX@?c>FeN|4V?z>co z!Z*i%!^mFvbAL)+H`9gec6nwjwXp0>y2SE`j!BpZL`A=WjRroC(Hi1q|e7{Bs1wvTZ6OuTxLLNxOMqjf|M z-^gxI=2Xg}t3akAP_!=v|EkV?=uDDqX6%0`86+W5Y{A5c9%}Z+cq#1J_?PM2 zEaFw8sGnIl10(tzK?U1YE>^v4stKkILsU#Bri3#L6r6{2Y!fthmowE%)5CjCVRL-_ zi)344jkB7k`s6-Emuu2jA#3z5l&tnfi@JYllyNhHzJsOGEZ3iSw1(j}BV&aru&x`o zEcT`4?H{8Z4x_*Q@je>2Okvbhd>h`oeK}pa@syEMUG;ek*BFj(iNqjUPiS|1&^Q1; znBcCcChTB}8PfbIXJJ~{5Tq1$o?pk{6y@~ySBDwB^k3y*)j3oh&yq>*twCEAA+H*q z-^C>+4~8Unr(kC@3)j2Z6qL6w#Q^VoCJnpOc#9-XNx`#^PMnOu<)W{+hx8(b$vpel~=K07!<*q)Gqnw>}W+z7J>z z#tq!{6UMTywd)=H;>tw^*YwIJp-AG?$vowCjh z{Wa69oI^!{{GtOr+pktOF~D)B4Y|>+jv3~}n$RdZkK_g^0q-hIXEjmmzeaYOY9!gF zX9N=Q>QzwAdQGFGZekdYfKM0|vH9;F0V9EDQI4O2lTq1dtQlGq)fwT})qq!pg(m+GEm<7S`Ex&P30o-FQ(s6jbC7d_!TI6n zb5$mKxPjjahK8?VGB9)6*MBW+-?;CsSj$=r6+q2*e11A~EU7NAWe`MU4qZ3e5VK-6 z4P^hh#1O(Iljb#8RsmTx2_q6Ai~MY)9_qJhUU~R#X^H_6Q6_@3qbKHfc|2u~{OJYs z!YxQjN-~ZdOADFXB>W57t0?HFy(G9G=#&3WFw6K+!fhlJ9MBgVdqWXf!S-2Iv;NQ@6>8+bX9iudV0YYx>>F33EdcPdKceKqAk1IU+u9(}aSh zl8UrkM0UHgPQHAtlIX@;rJn-xQfr59sR$SC!7+a*$=q-U4j8(&M#&?@nPk=##%FBy z9NQX>Y0lGzP1P^%s36FgV{iIwmW2rUOek~7xIrouSxXEh6Xbdk5rMBxwk3a=1DLl6 z=6b6eZ_hr;B@c-xBs*UcdQDV~@?~2^;vUm#k#!84ef4rK_4r~` zh0apXs8C)0ood)aWK?b7^6=+gGezSw1XoN3^ezQCvT_Gjou61${?WW;p)qR~2 zQR$hlBIhbgu5Zj2RDScQ9@!5j6_BXsaXiES!Ey8F(Uee&$4yeHb3l`Rlm6@T=HTbY zN{@*jbp4p?RoP!`$9&p7c{x4~>#wJt!}D&%mxh&ef(B!Ao*1HBL){hr z&iV5XG|bAE=hwM?1Z2M&{mL-Brs(4Rtv*HMlhB|C!>BWo7F(D=jlsKAssx)+^1-O! ze2|ixAE>RgP;SsjNtT?NzCc1oO?)Psi9iBO;{qRAB)4HC1VmRSKsL$({UMUiN{{o( zxNqSUXNb$)vJc+Wc|~LpNlWH35!1kerN~-bbw=zhxzK?SMi zPz^gLibNUphr#0~(*VP5m`73~yieZcG9 z`5qI(WUtM8ezJ}2=tU!rIx&`)`cq$3>0Q4>(avdLk%qZKy=M{(M{z`AaE!&*;RX^u@6ugtZWWE+qZ4EG8t?UlHNH;=umTH0 zJOU_d$dsp&gs4_Bn%$8~sB?4>@Jxt51|6EMkh71-;H1%PcV`vw;dMhf0MVRSYNQoM zwJ{QSB#42QniPMrNPw33`J8%^xNODc#^wA-Ox2xP_p$Yjn5iLZZjHMv3wQ0vK43Rf zK@`0c+t!&s_zg2T_={*M+mG`szK0&glhhb+a-=}C_?L~okjmZ9eZ;2#LVv`vz4?t8 z&!*-)-$G%NhPD_#u1uXTFx1_$QNWO7#7HRLT%r?w^qcpu?eUlGL6MH@&)XcVRzQ|? zw{=y$Fg|9wUnlKeM|FSPZVc>M4(!#;g&(cwMypp8l|D~iSx>xF!jwb~{4}io?dh>m ziKwzsZGk1__{&P`$#|86kA{?BzYAwiFFeGack_aWy0sGrWWtOx zYH{eiDfO#)!T}M0yQUbr)^rB>p3a92!Y(iS^4a~@5*}c>>S1{cSJ+*4+*pXL zL;tne!*fd&W77w6DAK&;<>;tR~Lb4s3`|7ZRh)# zezkS8m4t*y}i)IH9<{ zc#3$l_#y;Y1igg62onjVyNiWG@{uOOCk|$E&P_R)bQ#eqB zQ`}RYQi)MTQ{zy-)3DLB(yG($(*63s_atG=Inp}-0Ff4$1P_FR`|k6E08o*FsQ#-3 zbdKYb9bm!=-f1*PrWcZs2!)rUD?OX(osG-e;&IZKQYw)-T8%qUJs)P~1diw*LS_03 z-wwN###%@{Kk#|~Bo!`IbD3hw(eSJx4CkuzBk%5 z?5D?^=RB%$GKuwt?w59BJs-X>tNdjpo-jwb`d$sA1jqH@^ETL{`vszVWKrgpsiPF) za=?!Cm`SdXf0*oj)@4f)muyw?vh5)!U`M`(P38um8u@y!r2B}+?1VIg0IM~2X|b`g z9)5cN?rZh4cA6DMgnq{&8bTty)W`H#9RXhVX0^h)9uRCseAuDB8~}MkLvEP}`U>3O zVh*5r!%A-1vilm`5M~a*JE8ie+^~(LV~IzIi&OWYMmYOu-Oy|HoICwE?l888dE78> z_PjiO5$}-shbdpta`qfO{TT1iyN5YmF?RMmK79%AP`!s4U(tK^TtEGO-eID_m?i2@ zwkR6&qK|W{QI2C+i)!d;4E#8HljzN-m~#H@BT6?zY7DA^UZv7>EV5MOTD++$vyf!o zR*+u-K_ga_;^eugW^Im__4}{T*@Bo!i~Ny)3vAOVS~Yy1DT~z;o4lO8R%431*r@RF>`x5&JqNHE^5WJ?YEujC8VaxCA#r}as`Ea zX=0Obm1m)TdDDdE$dUx(3Qy2|qN!RTv-I0z&+p|fvNBIn_mySi{FF*La>{i#>$G9Y zE_m+Q&j-?B&YZrYnOGC0Ys&%aSz2S>NzqGa=r8T(KXz#V#&||>bmoum~M#lQvg#_wviwg(N%*M*C zlBWzb|Kw{=-I*M?PiGgk z_c#5x$q(l>TaSP>NU(oVrM)S3m~~X2=fr(;$>O&Eh06nFNHqzc@;6roYC1%Aw;d0H z+2UL@H{tHfx>G;S)8+L>%xQYwD%mDHKw0BjTQJU#RIfoM9a4~?%6Z16Ce~$&D+&=( zuw18;RR+hV>DOW$6(li?`pO_g)dzK#h>Bm;vK3xP}k1Rw>3MhA&;8(LIlh8S!d0FW22bwu?l z6h+w{C9?njlAw+u-yD(|S!vaz2Ls8q99#?BbUj=5Y!r^ed0{(92^?Qu!Yne8x#w#r zi1%-+iTK1lxsou4Bt?^d=*Rx|>maICrxTe@2|N-Zkw{rIF@!|3L~`5s*L&ZWJH+ee z-@TQ~0A8|Lnk9sxBqTsk)GQ#lNLWU&n1rdQ%t{0;2r6*{Vhgs8&FIjL8*#SMR_mfe zJH&q4exXZBCj)bCcEo2Q7e&-w37wWGkw}PyNMdvw=IgY??}#6@&?*7o`>JW}W40R> zq_wx(d)f|>UlMH)U_kI(EUcqmHAy4j5;{h}kE!YdSKzud+HFn8{VPeA#~&-JlN4`P z@Csbtdmu%}=@3Q9^60XireiF}d8zBD%Cr%PZez_~`G+_eKmRg;*#K;#-R^?2Vc4|D zGflg|GRqvBf1B#+sEi}iurwW}zOJ1XeK^_w|2xTdC&$s9UFUS6ljE11=L0)!LtgI?Skx()beDf05B0vfvG@KU+2EPI`FF=8==kk9Hr*-P-Do!d9gCGYS_WN%PzzS*u(22Ww86Y^rRVzUVVLlHaejH~? zkqcO>Gooe~(1|Mf^zUdU0q0Kv2l>y>@|Z{qkPCtN_T=frd=OQJ0I=0t=yoiRg@8ly zTo&voy^c))4sVCRSo<9@T>qK?fu<7^Akdqo{WEyLfWZ++6b6Keg^k09FF!OC21g)K zXbcvIClEd z%hU?BO07{Sg;6*~P$WfBG{sOX#Zf#ZP$DH!GNn)|rBOO%P$p$jHsw$*7J1(1}$7CkW7G5G*a*`5PUG2QmLy0QX)~mmDnf? z%;-sV!H8Xnadu^6ecar*Y%$cTsaMqh(S@BEUCp9aB{m2Fv=*&RAO;S(_SSgX2N*Ls zwi3h^$HK7z%ory#;1EQWOG-|uC+;;;c<}qO_9Tv^l|Gj9$n-3gyFPpLm;Y)B%ofLc zqCKJlD^QR!8E3i)Stxztfs*9Ef8RnM+~_3XsmMC>~5=Q~O>MOr*!(}Z)aaN~aG;d8_RWj2(U>q{_TK15qc=g-1-Bi=LMl5EAavNj1@b~vj7gr8p}7$}pBmaX!aNx+HY5&|j1@Un)yl@^5`e=HbE1({5-5);qGp1} zXk$nKB=Yr~L<($_+h7cd|1-%&wxBP&X58Vw6+_AB@dZ+bPBWNkM#-BPTSN5;s@V=8g9}Oe7IrXHojubFqxnCU?q2e9vC)iO zJ%4=KO+HyaLERP94iwA`8LGN5q*$`8nmIwwZ7e7{VuH0s&f0IYc#8H6&j2=Gw8E9x zViL%<>pNz10czGKGTqhV&Q7F?6`caL`JsYVyMIKJuMs!{iB525J;q*kfeaZB*=*4Q zr*Wz4v+mV!N#1fYFJ0G&jHlpFbFuLI9o~XhQob69gOrCotR)Y}z2pK`%_F!F9it*U{Nf?|+lOqH-htQkhB>J(w3 z7;UvTA1OqNJcZyy##BQ$C=Tm1d$UVa+Zytz(%oMn;VQk<7^p}>GieknV(y?Wg}|Fr zF~QBeGrePD!%w*Xh!SZ0;^5q)xA<$!nXY>|UZ{pRkx%a~V2ps2dq!D_nw5!7@FuLQ z_vs>Tw9{lqa=SCj9^|4)df#OvoT%KK9SjAOm(a=J?2ku{YfJ&U%d8kSJAB;vqB^sg}3Oy8Js(f=d|6E3HO5dEUGRtV=+*&dr?Xm5t4_AVt+H zTbj59avf5c3C|zNjYwZ}YB_$A%Yme&H=Sb>f-Nh!64dGo%g#aexRco=_euIXoYUj@ z1T#G7)aH*ok_)QYY6OZQ_4;9_C$PSHpNYLMUAPkO)=T9I=C+nsu(8c2Z+50X_i6q( z+x*azneKI~<3Vhs?A0SYY#*H))7?)mgEurcCSwkubIiTI>7lMaB1+-^#T9>lgte}} z8N|v~T`u@zOtRwOuJ6;Idzp%A-wY2k1quqMwX0q<^eGwB3Mk@OxyV%3I>^v2eMh5| z3DMeGs=kfdZI?gw5apKBm6N>Fv8!%%)Zf2Ky++p}vrJAEN(=IYUawEu%PcG1$~L= zkm1uxn@-T!SU-jm_g?D>g&WK2NEeHcno2Kkx($F`?rvi3s2~qPFs{E zL|YA-ljTxtgUhl|pahc#8| zM&)BP9b;4Fq%c|Y450ghpEAba8QyAOfooB=2fYohOsATk;=kTLm{3sGZZ zW3*fr6Vd4iE*{R$)$TFDXeOsnS3X+yeaMY zHNaTV1a!Ld2{*}veA?0&yIqr~s$HVBohezSRkX{RV5Xp4-s`qm?b*u7s%X3cn9O;o zcR@8$;O%s_+-h z&|SWIN|T99u-%ref`4;x!LHqSGB=Y)Sg1SjfJ7M|7h-bYjtcBC{0`ocgHrcIo|E*j zB(x9diX||@>n&&pl9NH<7F68QjjXfmCA~A+8Lu1i59#6f(n)6r?y!fAEzhJacz1qu zkHVAuG0p$ZJ@k+BCm{oNnvZgDcy~*Qd5ngWcx*3XnsQC)TEi14RMFNxLO06V#%ME* zO=ImVzkB1B8iWhs&AdZ_ls|^oC`7Ga8o!#nT0julSOtx$&HzSu{O!Z{2aVuJ^EsQD zceXiT8ix);?wn>yxoSt3peVHlg<|)uS})mLW==legkEout(ZO=IKO(2ug(1TK7;+A z-^f#TonM>O$k=ndm$GNF=W{4~e+$I`gdn0kMk_Hv=Si7cB;Nw?R}u9tc-94v0n(89 zVBrwBg~ug0p3FB|eHmts8q^EOlxn%5`FD5^5oYuGPN@D1%w{*QcPWFcMK?p+INy&Gp(dQJaChaw0up7LgB3K44#j+rsJ_pL~dzEtC>o z48e12)F|b~VfYO-y8cuyrSh5^8;`s34$d+gBGtn(IM7saFcY2th4{%=0kNgBaSap{ zMS*+*{DqAN4oe!Wm42K#fnBYIKZt19DoUAR**T49FA`ZP8WdX4*T2dP)Z(r7?az9( z3_Ghw!8R`Wu_GoSE9 z+Q-Et!!^!n7O6ut;99hnZ}3IXbS4`khe_Aaw-NXa|GNV$K!yyL&u;my`LZaFW@2Pr z?3Rb0jkK*)ENJgMHFau>s+VoV5>)Z&P?`PDJ4C$d&)E%P{bzBk&ANlo z;bLNbo>Lm7m-J-$+elNqD&fuPc=|?{$Djj&I5WZp-KIh#YI)a6#%SX-4%3Lb6zR+{ zH)FadIdLEooe6|FkTT1N)J9SPuKh9MSyY6)GIEZT9o3HlM{`)Zg%IojDBe4BUf^YX z6*ZJ4FCX}NJd3KmL0s@RpSO{Gx*P8=Qgx|u`t5M>(7RJr+3M`1r-xTg;ss>}BwhHr zZ`QA#!sFV;ps@~Ts{{)-bSA~j45ZGjM)@B5yU+U`Lf#L zJrUVG%@?}XJH|F)?*v?{)@~OAhm$;e54J#kk$@UykHK?{My-d2DCq?mLZB<%v(ZK} zBm|ei#%Rcxb?rwWAVP8jwF4(-aVi3nH=#o7o4*c%kRf?7Rt=Y)vJ6s5W0TQPcedyo z&ysvRCYu?mD(n!lgf!yQe3?oUouzh?nPmH8k9hggEu@X%@DnA5#B#R*Y+Aw{H_7b7 z7Sku;Y0IY{_sJ*x{F=oUo92C!_+wd3@kz9Fi5)Y2`HV92wKq|1-4>!=w$a)x+q~N` z_V`JzuuxQrz4^|p4KIyU@!=4_|DFe~5jKX)h`}QoP)LcBieUrph7d_#Bq)w(S*=G* z(um0ZaY;_dbnxO9X>+Y8%65M`)0Y!DxoVHQRfo*JO0HRUKOF)Y^LccPtZJtHLyR2dv&WjC3J)`eLA=W2gCv9c zwTDf@)-S-WoRDOdg!>2*I4uE6hY}R2ZMA9!Hlj|`l3*wbTmq`)6^2mI7Rm}j86M&s zaL5q?X9|xu8k5T!($%0i>!#k(SohF+1>%;arEaS?jsij;0<&tDyK45{X@9*wmO+S?3kDDxoJboIEMY(Q4HuU{ zNO3~IJy1d=x~ClvQtnXhXoky6Oz`Shck;dDpQ15?H0U&gW=Nm}QFzGjh42NB!x8CG zx;|ukK`NF~>zLMr(6Te-v3cZ```Zjz&^R|L-g-;0E9WL)4?EN+(-3Yd-70>fP9uQ8 zNf6N0w%U2#&BF#-$5MdrE;Ksvx%tXM%fc%)^Zdn{fx?IW!Mi`y=rpU#V{w`Nc)i_c>Zf|fIYDmOeHq@_dYpg^zE z|He^CR3P~$j^Uf}ZwwM7QUB~hg%GW#d#}GYd{5uCvo#|k>tx}aoQfr7+Etm{L~Z{R zQ!SQ@rRV+E+q|{8T#FXiY=HR}7By{~PF7>RF+*FPEqfjuS+X*f>T; z2;ze439c_4I&1Y4JHenaAv!qpR&Ffq$7|;aEDsEgC!784%QyqR1Du-E*=fFK&(=4@ zB2&YNKR%30M%Nj;w$FFOLK8@UW|#}5SOPFXe(iQ>rI8c?#+Sr68m}b0$XmJK_Pcax zbXRW5+GJHx=v~3#n>3lipl_);>RU8J7FUFgIG$yA9HRlU;}2!Zo2nCh$mA zNTvUIJfy(G6sXn|dg1kSc!Pcs^n$(tjgl8BQKW~Q7XQe#j%9PIs~1a=0qxW3JjI@g zWm_=!>r$NFTdC^%*UE+!(z>POzmW6qzZ{qwh}nWS`@lkF^OI!j{?91%0h_8MTrCdN80+INgGUy%kFk*znl{)u|IFF7)y`! z6lI8pMjiYpVV?)Ky^Vb^lR`Z{{b9NhE99h$cmz{9I~I zm&s$hzp-FDnY#}&@K}x6`I#GHlY$uXf=(X&n(W*}0|11mK^ZPhX`MuY_V3d2Msz*P z)B^R|RUHoLW8;4lUx~Y;{~F(WuVOUz`~|@%G#^1Q@Z+jXv`N-JvDuLTg{qMT<9=iVt6pK7)Qs7}>3EwY@oD#boH1z<16z=J=i<6x zt1^-zgHVw4XJSHgUUgnWZ1f|F&iTzw=N0>ZSYs3r0GAO81M(t+f{@{W5ZIS}=+8tf zzw;OUGVMY3=dD|di&zW<){MDs$MPa5fS(9!y0kz9+VAA2NwnZnQ`iX{P!YUE)-7q< z5TPfS?>9*A^>dI!FF_L0@aX7erG9d-Jcjkc<_rvU+Fr0?T$6$zsB%PT%}8Bb}NWoOMRW4a^I$Jg06-skiqc=7rYcL*e6R6*i^qW)kDM=x<4 zA3pAojZ}bim(!ax!q|6CIh>Bmf@LdWoO1n~jC9Mdj z-Ya&*Q;1@xln&xHF8|)tGvYE3&P>IogULS;l0gYtOP_E*(g$m7^9rsTxK-~e%j~;< zan798$UNEpH1y++gX*$u=fY-TvGVv<`tR>SUQ1toS@C{o1|wN0N>_4!&hS)Y2N<4= zpSe6N&rkcWS!|ogp*IV#;9zSiish#+6^kXQHDk$Zu9dH`&hVc_-7<;vBGdH7a?6$C zgccWXy_t|8$=CQ)OfF&G8TCN^(pq?Q;B}>qXhzKz@{igQfRB5lFcaM;(V^pKB zCPo!pTJmReq!MX0`+BcHTw7%rHoR52mnD_U)r0D{O6CosYO9^oUDL5$y`^RIO`%wx z3&pcP19hLOkPV%T+?B)#W;o8x{UMo~UcLbZGZr45ksbr9Zf7r^F7;(Ig+SbN^sOHt4}(DboKPcmw%2%o?2*f5J6qdGPYs5x3&skhe0R z(%XHfgwgEBgj^SVD0tbFyT5;^#%6S-y0sA*1SiJWr{f5g8GaxPdvY-&#Z<-JNmP4X!&*7F~AGQWxSk|#CmaI5) zt;5c@-iEnXEU7SkJi=i8!`Eo=Ru_bQ3PBl0=5h;F_1q681Fj1mm%>M37=U!P6Rh11 z;e4NVFD?g9XCg_H0}^%6mV%U1;2MkoMYYTIgZikFeAOLQRO38-`|&TNxfYdIHJTTx zcj*6Cs;nyT`pChLAO9$g)|{`pHuPw7z>Q^fzOP))$e6rzY^$s5|%b@>2oK;^JCeF(b71m~QT#6C5(h=h#miy!L2CP`^}jYdENc)l+Q67p9NI zQU=|7wzt#3&=To9|)uHeIAC6;hEBZ4@!Vll}L6SEAP45Xq zpE~VsLg37c5B-jGSaCl;oF99^rM^eLMiE@Ts_RgwgEyTTJt`eK_&zx!>Gq5D9y|mB zCj~0UGS_jf*F%8|3JfG-imd_5!hX&2&>j8roHz>NHjAg+sN!*X`E?szx>bIDt3KXU z@7oM&#&E;0r?w@%d^Tg zt%|l}Wn#S^{H~7EJ|+uXgvPX8;wCJCxF6n z=Oc)sz^~io!$!e&kQf9~G|b8ZO9JnqREsIwm4ax^GfgyK*`dU= zQq$n)OpS=i8RjrW8bID_yGIt%!_r|J0F#hF254}!j|5OgprqkXBaAiMXEyp3U_2+v zdi@FN9rrGGwbnrpVaa2EaIb!ltn&O#SdsN~$d%FQG9swC|G?Ktw zCu6vC_--H%IIK5rfSAn0bTfdg^k3y%`nz8O+L`E@gGT-ykSj~KEd5y&ewL&}2RmRMgQr)f1hNgs#Zr(4@he&XO-`dEYE+EW5|ZZ~OrJ=6o=pWZqF(ms ze6S=R+|Y6)zA9qpx#1Xl4ao>!qF8Z*P}{x;`U+btUF>?o*Dijq>GaEs?cDvq@2c8~ z)D$%xKB2N9HHBUs{nsDtdu+gxF?VjJitj&J@m}cmKhN0wjMy5CE@N3XLPSd)CVz>{Q0W1mpVIjPbNAS$7JHt+aPEgUig>RTHYL8*sXdwQ9Vl1ItIg*a{`(*G_Htusy zmf$OSHaNpTCjgp|^NnCK{G7pK>>I7J}1k5T!9`sgOCXP2IDg@x}_<(|+*oH$f z5<|SvVkNM|H3#mu$dIh%{(&_yJi=;e%(;sb_G~6nA!bUNhIt*X_0BD0+7;zbRwX7W zSNM`%lHU;0=uFSfP<5)Vrcbl(t5!>#lGG@*REnZFtrP1u;Pizo%YXk_MvH{-&Uaku z=(se1?Mc-h2-|Od-rJ2kGF`+P6DEIr0KRU-vPW2HQYS`Y1@Q-+4)f#j<#|W2y<0B^ zI;_pjEv*42zylaOLXg2REUI~TTP!VkJXZVnv_wb^p-t8NIeB3Rr5WC&MEAjZ@5Ck^ z7ke_0b@zplf!Ks5>-tte?w5a!Eeq2fMK|T#WBDK`}45r0cNZXXD{6M+6BNI3rSdT>}EM`SQIu zcOHK0q}m_(s}CG5n3Ds91%^GFT#ygJ1pfZjtMB6zAirQT4c?qsE`}8>uI;S_A5{N# zX&Yw-Hz((>bK4foTl^O|`y&9;e}_=lplka|pMP|{o0u}i@*Dsm&+c1VZ&E&1n(9~8 z&*=sdD3liVl}{s##&+9V37MIl`zA};)$ROs#%@8F zreITmJfJ;`zboKw>*?tnwh#0Z3o;@6%xP%Rz7uq^5mSFPO z>PS`yYyNQ^aF;xaiFIlOAU25ON6xTtXT~hjw58)UQOz~xvTS9UsWrvu{S-#bH z#c@f**&}We1o}ksiCE9+6%0bIJDDb{`MWP1q>MIvkyacj)jfMBSZnUdM@XEB{F!pW z@Aumn7Sz>;=eJF1;YBm@G$gyMJeJ4uO#-X9@(Y2&X3_jQY|i$DQLU_O6Eo|*Z1G5G zGS>cDmawF4vCl~ncH!Y(y}@E}iJkPi$E-q`fS$L!`9 zfvj8n_RA0Z3>IEh@w~4d zy;*VizONr)RLy;r(S<>bTdNClVnFD{1mr;reNSoOjMe-t)?fc4GGMfYSdCT_&JRNt zP5I`af$_PagRos{a#ZTvcJh8?NOrW{;6VEWOpMe19JbacuxzYhL_(xk8TEfz`2>gH zTmPzOSgj27!TR(=?D`K7!kCNte7*2|5P*d!2vKIVU352*8KVT{C);WqDJG9es zf&0$}%;}*n#={wunt>4g?A@QQ4keg+Z~;I@z^s;B7%ZQkzP@zRTd2DO&@^~k$^J7Y zl!1V_c8zn~S(lr;ChXBqR0C2LMQumgVqD@tZ^+O&>I4s9C;Axgw8`lI=QWmWcU zib6p3GI^F@)}kV4fy)eszFQi!^or`rQa|S1yA-lzUX)f#FBS^dm4Ud#k;EQBTm&5$ z!sF8!g+nK>tb7<{d;?qiLKsG-@GlpDYnho40{PvE|2$^w>#s*Al*>YA2q*7_%#JM> zpbi|+aQpQzj3EJzWlN=u95V=i9#qM5!G*_<0rS?C7}w>38e)=)2NZ7QrUT(&~8^v%=6-KaeJa*WxvMEzO z^4i5BQ1m}vVIF0!zEIdxt)pV?zOYl<2)n+PBK>O+aXhHt|`O(JWf9F^q zx3+sPdN+m5OOxScDmF)2u|h<6w-3?Y`q;|xQTaUIh?fwpsE~5l*LDR}XnmrX#a0E` zWNuvGNM6bzDNRtWr`O3>Sf>HUC}Kx5b{EDjSnO)a+hrPkGNS2v;Nfs zrh;XmUbqNT!VXc9DYe%_>;jkQ`d-Bw>7lZOE$&YYRPR43ee-JWh0N&6w20RAq=e~O zxqPLI876FOnUTnh*ewSB0+KpNG@gjPR!JPhiB!Sz#(tL(MEyqe4x(@R#9Nl%*4__F z@;mQzHffC~ugjo@{$=vhh^05pC4ff!c#Nea8^=e~>Z3<8GIr>2Py*L%OZobk)W$`)nKYTEO4`CdcCC77{JYD;bHQ~oPh z)fsRu+CYNMZGw$*fmz&A6M4xJs$xzsBCNB;(+@0_PIZj zH?&(e=jU(UQg}GUU|h7Qu^}htK7yEEKaYI&6yy251BI`CZCX1UD~0JH^%b}HqS4)f zruvX{SnAK@yqckh+&Sui_p-J`a@8hlJu9J4K20EXlClZFFbVgTw zQfNGl)L#6=>nuYXY#92yN}Hqw7{DX5`VGDtz_rW-!WYLAleATz4>dqdx_p7``QTa- z@zAV_L|vlAZ2qVRHaEkbkIZIEqAtdI&hpik!$Y;#-&mbI8GruN@8TWb+5heMwWse} zXS2{0q(^Es0*oC_4~GL;F>Z{&@D?(T?30H1-7zf4;duJSN0&H;j}O=F{GbJV_+QYs zn)Yj}F9(ukU@?OAfc-C=Ksmiuhl5nGa(WsZRvv)^~}i!s3_#=dv4d3=hKt=472YcD;2@03P;v3JrVaANNVY zh;o5IWxI6v;!ir#mXkifOmv|>X^b9HFR!p1k!w3Mf3QC zXt&(}rHO@07;tJ7EQGlrJ6@J4nmJReh?doAq7@3xOi^Z9b8)jVR-#5K6?uezR5Gw?z zo0;p3gV*a3@D~hV!uRdf-tPkdpMWvDiJ#2=2LXQ?4O8%&i0%{c0{GXI^*&R3Sh`PL zuv;@SwM-BIadlvy`g@xH$v_EMiL)7`Oen#UJ(9^cUzYl@j{isIYATf88DjzXWutlb z=t4GT_8%lDR++NTq5?G&2AtFYgJVngh+_(Vbm37&M-x^0W-|GHQ3~TA{3dJCFWJEu zeUD_oEX`vbVoIcw$>^9LRMph{M2FHJFh=;NY@>PCg`3pA8@dv%c7b&&kXYX@m0>PC8@q3)08{f* zRyP*PAbi3${%!gntY!*s|NS&y5)xh^Hawl-fiTv__1P3s>Qa}%X5R5{s!Rhgo3Fvi zIMX}Fem8QE8$0I*H~@MiD=hA=fS_repUdjyoTFKQvBoi37z%tCvS^jb+b+fyvF#EZ zv1CPwFo8Q?iSL67E@A>m;?vj`UElbuQJ~XzFkv&*P z5*U?a+J9jg!k$fFujL=S7t_s$x9^LJxrf3zkT=uIrf-*z5g)Tn=vFs(rraYD+cdWa zqd+kANY9y#QmDSF2o$bsp_ zbL!jWW5m31V%_TIPAobgVl&ptXZC;;Z&v}M{d{Moo3ZR|$3lI0@a^!)&hrCM0UrVg zA%YkZNPnbXQ~@PaP(y=aI6?m5ZBS=eju%8pR#Z(lOv`p$&kw>VPSPwd%BpVKoo=r` z7>)o$m{7*!B+c@otm>u}T|bP|ysX=PoY(!lAHnAx!NsX(G1Fs~X;h+wr9g?f2&$He z257(&rJb0ADCIg0VNEz@&2A;{b8ClA$$|q8tEU{nX(ekC9=RAfN+wQ^&B%5*abB=L z@p4d_KAugu_2Dm0BAy^ZN(GZiJ|;IN(p>SP1wm)&LE044=rp@&kf6kzB24MUqvPCY z5`HPHfIY!a6IVDBVV1ac`c@V>PwYY8Qu`a8Qfx2MnwzL+C#Ko@uY#e}S~?_WJNuxI z4b8`CMS4`nEK>0#AaqgKliNXTWE$;B#W<7WI_LklWyNKdtTyhQP_=_;xQW2&vJBVr z(uh=rwu7}7LYel)NwPhbcGmw7 zb{IuZdj#<2fM@Wo#Lj?zCYT-X$R8a&lxACq9CWcY^B`f8;7JffdGJCvmZG6?6x;|! q7NvqZVXp_Vt?v4$lS70_aI{4V^Rp+8v{IwoXRl_JzD-K(FaQ9WlI&jq literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss new file mode 100644 index 0000000..1ab9a1f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss @@ -0,0 +1,90 @@ +.alert{ + border: 0; + border-radius: 0; + color: #FFFFFF; + padding: 10px 15px; + font-size: 14px; + + .container &{ + border-radius: 4px; + + } + .navbar &{ + border-radius: 0; + left: 0; + position: absolute; + right: 0; + top: 85px; + width: 100%; + z-index: 3; + } + .navbar:not(.navbar-transparent) &{ + top: 70px; + } + + span[data-notify="icon"]{ + font-size: 30px; + display: block; + left: 15px; + position: absolute; + top: 50%; + margin-top: -15px; + } + + i.nc-simple-remove{ + font-size: 12px !important; + font: bold normal normal 14px/1 'nucleo-icons'; + } + + button.close{ + position: absolute; + right: 10px; + top: 50%; + margin-top: -13px; + z-index: 1033; + background-color: #FFFFFF; + display: block; + border-radius: 50%; + opacity: .4; + line-height: 9px; + width: 25px; + height: 25px; + outline: 0 !important; + text-align: center; + padding: 3px; + font-weight: 300; + + &:hover{ + opacity: .55; + } + } + + .close ~ span{ + display: block; + max-width: 89%; + } + + &[data-notify="container"]{ + padding: 10px 10px 10px 20px; + border-radius: $border-radius-base; + } + + &.alert-with-icon{ + padding-left: 65px; + } +} +.alert-primary{ + background-color: $blue-navbar; +} +.alert-info{ + background-color: $azure-navbar; +} +.alert-success { + background-color: $green-navbar; +} +.alert-warning { + background-color: $orange-navbar; +} +.alert-danger { + background-color: $red-navbar; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss new file mode 100644 index 0000000..cc6fdfe --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss @@ -0,0 +1,128 @@ +.bootstrap-switch { + display: inline-block; + direction: ltr; + cursor: pointer; + border-radius: 30px; + border: 0; + position: relative; + text-align: left; + overflow: hidden; + margin-bottom: 5px; + margin-left: 66px; + line-height: 8px; + width: 61px !important; + height: 26px; + outline: none; + z-index: 0; + margin-right: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} + +.bootstrap-switch .bootstrap-switch-container { + display: inline-flex; + top: 0; + height: 26px; + border-radius: 4px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + width: 100px !important; +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + color: #fff; + padding: 6px 10px; + font-size: 11px; + text-indent: -5px; + line-height: 15px; + -webkit-transition: 0.25s ease-out; + transition: 0.25s ease-out; + + i{ + font-size: 12px; + line-height: 14px; + } +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; + float: left; + width: 50% !important; + background-color: $info-color; +} + + +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + z-index: 100; + color: #333333; + background: #ffffff; + width: 22px !important; + height: 22px; + margin: 2px -11px; + border-radius: 12px; + position: relative; + float: left; + padding: 0; + background-color: #FFFFFF; + box-shadow: 0 1px 1px #FFFFFF inset, 0 1px 1px rgba(0, 0, 0, 0.25); +} + +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.bootstrap-switch .bootstrap-switch-handle-off { + text-indent: 6px; +} + +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} + + +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + -webkit-transition: margin-left 0.5s; + transition: margin-left 0.5s; +} + + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container { + margin-left: -2px !important; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container { + margin-left: -37px !important; +} + +.bootstrap-switch.bootstrap-switch-on:hover .bootstrap-switch-label { + width: 26px !important; + margin: 2px -15px; +} + +.bootstrap-switch.bootstrap-switch-off:hover .bootstrap-switch-label { + width: 26px !important; + margin: 2px -15px -13px -11px; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss new file mode 100644 index 0000000..bd0d462 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss @@ -0,0 +1,132 @@ +.btn{ + border-width: $border-thick; + background-color: $transparent-bg; + font-weight: $font-weight-normal; + + @include opacity(.8); + padding: $padding-base-vertical $padding-base-horizontal; + + @include btn-styles($default-color, $default-states-color); + + &:hover, + &:focus{ + @include opacity(1); + outline: 0 !important; + box-shadow: none; + } + &:active, + &.active, + .open > &.dropdown-toggle { + @include box-shadow(none); + outline: 0 !important; + } + + &.btn-icon{ + padding: $padding-base-vertical; + } + +} + +// Apply the mixin to the buttons +//.btn-default { @include btn-styles($default-color, $default-states-color); } +.btn-primary { @include btn-styles($primary-color, $primary-states-color); } +.btn-success { @include btn-styles($success-color, $success-states-color); } +.btn-info { @include btn-styles($info-color, $info-states-color); } +.btn-warning { @include btn-styles($warning-color, $warning-states-color); } +.btn-danger { @include btn-styles($danger-color, $danger-states-color); } +.btn-neutral { + @include btn-styles($white-color, $white-color); + + &:active, + &.active, + .open > &.dropdown-toggle{ + background-color: $white-color; + color: $default-color; + } + + &.btn-fill, + &.btn-fill:hover, + &.btn-fill:focus{ + color: $default-color; + } + + &.btn-simple:active, + &.btn-simple.active{ + background-color: transparent; + } +} + +.btn{ + &:disabled, + &[disabled], + &.disabled{ + @include opacity(.5); + } +} +.btn-round{ + border-width: $border-thin; + border-radius: $btn-round-radius !important; + padding: $padding-round-vertical $padding-round-horizontal; + + &.btn-icon{ + padding: $padding-round-vertical; + } +} +.btn-simple{ + border: $none; + font-size: $font-size-medium; + padding: $padding-base-vertical $padding-base-horizontal; + + &.btn-icon{ + padding: $padding-base-vertical; + } +} +.btn-lg{ + @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large); + font-weight: $font-weight-normal; +} +.btn-sm{ + @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small); +} +.btn-xs { + @include btn-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $border-radius-small); +} +.btn-wd { + min-width: 140px; +} + +.btn-group.select{ + width: 100%; +} +.btn-group.select .btn{ + text-align: left; +} +.btn-group.select .caret{ + position: absolute; + top: 50%; + margin-top: -1px; + right: 8px; +} +.btn-social{ + opacity: 0.85; +} + +.btn-twitter{ + border-color: $social-twitter; + color: $social-twitter; + &:hover{ + opacity: 1 !important; + border-color: $social-twitter; + color: $social-twitter; + } +} +.btn-facebook{ + border-color: $social-facebook; + color: $social-facebook; + + &:hover{ + opacity: 1 !important; + border-color: $social-facebook; + color: $social-facebook; + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss new file mode 100644 index 0000000..7049779 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss @@ -0,0 +1,255 @@ +.card{ + border-radius: $border-radius-base; + background-color: $white-color; + margin-bottom: 30px; + + .card-image{ + width: 100%; + overflow: hidden; + height: 260px; + border-radius: $border-radius-base $border-radius-base 0 0; + position: relative; + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + transform-style: preserve-3d; + + img { + width: 100%; + } + } + .filter{ + position: absolute; + z-index: 2; + background-color: rgba(0,0,0,.68); + top: 0; + left: 0; + width: 100%; + height: 100%; + text-align: center; + + @include opacity(0); + + .btn{ + @include vertical-align(); + } + } + &:hover .filter{ + @include opacity(1); + } + .btn-hover{ + @include opacity(0); + } + &:hover .btn-hover{ + @include opacity(1); + } + .card-body{ + padding: 15px 15px 10px 15px; + } + .card-header{ + padding: 15px 15px 0; + background-color: $white-color; + border-bottom: none !important; + + } + .card-category, + label{ + font-size: $font-size-base; + font-weight: $font-weight-normal; + color: $dark-gray; + margin-bottom: 0px; + + i{ + font-size: $font-paragraph; + } + } + + label{ + font-size: $font-size-small; + margin-bottom: 5px; + text-transform: uppercase; + } + + .card-title{ + margin: $none; + color: $black-color; + font-weight: $font-weight-light; + } + .avatar{ + width: 30px; + height: 30px; + overflow: hidden; + border-radius: 50%; + margin-right: 5px; + } + .description{ + font-size: $font-size-base; + color: #333; + } + .card-footer{ + padding-top: 0; + background-color: $transparent-bg; + line-height: 30px; + border-top: none !important; + font-size: 14px; + + .legend{ + padding: 5px 0; + } + + hr{ + margin-top: 5px; + margin-bottom: 5px; + } + } + .stats{ + color: #a9a9a9; + } + .card-footer div{ + display: inline-block; + } + + .author{ + font-size: $font-size-small; + font-weight: $font-weight-bold; + text-transform: uppercase; + } + .author i{ + font-size: $font-size-base; + } + h6{ + font-size: $font-size-small; + margin: 0; + } + &.card-separator:after{ + height: 100%; + right: -15px; + top: 0; + width: 1px; + background-color: $medium-gray; + card-body: ""; + position: absolute; + } + + .ct-chart{ + margin: 30px 0 30px; + height: 245px; + } + + .ct-label{ + font-size: 1rem !important; + } + + .table{ + tbody td:first-child, + thead th:first-child{ + padding-left: 15px; + } + + tbody td:last-child, + thead th:last-child{ + padding-right: 15px; + display: inline-flex; + } + } + + .alert{ + border-radius: $border-radius-base; + position: relative; + + &.alert-with-icon{ + padding-left: 65px; + } + } +} + + + +.card-stats{ + .card-body{ + padding: 15px 15px 0px; + + .numbers{ + font-size: 1.8rem; + text-align: right; + + p{ + margin-bottom: 0; + } + } + } + .card-footer{ + padding: 0px 15px 10px 15px; + + + } + .icon-big { + font-size: 3em; + min-height: 64px; + + i{ + font-weight: 400; + line-height: 59px; + } + } + + +} + +.card-user{ + .card-image{ + height: 110px; + } + .card-image-plain{ + height: 0; + margin-top: 110px; + } + .author{ + text-align: center; + text-transform: none; + margin-top: -70px; + } + .avatar{ + width: 124px; + height: 124px; + border: 5px solid #FFFFFF; + position: relative; + margin-bottom: 15px; + + &.border-gray{ + border-color: #EEEEEE; + } + } + .title{ + line-height: 24px; + } + .card-body{ + min-height: 240px; + } +} + +.card-user, +.card-price{ + .card-footer{ + padding: 5px 15px 10px; + } + hr{ + margin: 5px 15px; + } +} +.card-plain{ + background-color: transparent; + box-shadow: none; + border-radius: 0; + + .card-image{ + border-radius: 4px; + } +} + +.card.card-plain{ + border: none !important; + + .card-header{ + background-color: transparent !important; + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss new file mode 100644 index 0000000..021f0a3 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss @@ -0,0 +1,230 @@ +@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) { + display: block; + position: relative; + width: $width; + + &:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: $ratio * 100%; + } + + &:after { + content: ""; + display: table; + clear: both; + } + + > svg { + display: block; + position: absolute; + top: 0; + left: 0; + } +} + +@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) { + -webkit-box-align: $ct-text-align; + -webkit-align-items: $ct-text-align; + -ms-flex-align: $ct-text-align; + align-items: $ct-text-align; + -webkit-box-pack: $ct-text-justify; + -webkit-justify-content: $ct-text-justify; + -ms-flex-pack: $ct-text-justify; + justify-content: $ct-text-justify; + // Fallback to text-align for non-flex browsers + @if($ct-text-justify == 'flex-start') { + text-align: left; + } @else if ($ct-text-justify == 'flex-end') { + text-align: right; + } @else { + text-align: center; + } +} + +@mixin ct-flex() { + // Fallback to block + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) { + fill: $ct-text-color; + color: $ct-text-color; + font-size: $ct-text-size; + line-height: $ct-text-line-height; +} + +@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) { + stroke: $ct-grid-color; + stroke-width: $ct-grid-width; + + @if ($ct-grid-dasharray) { + stroke-dasharray: $ct-grid-dasharray; + } +} + +@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) { + stroke-width: $ct-point-size; + stroke-linecap: $ct-point-shape; +} + +@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) { + fill: none; + stroke-width: $ct-line-width; + + @if ($ct-line-dasharray) { + stroke-dasharray: $ct-line-dasharray; + } +} + +@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) { + stroke: none; + fill-opacity: $ct-area-opacity; +} + +@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) { + fill: none; + stroke-width: $ct-bar-width; +} + +@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) { + fill: none; + stroke-width: $ct-donut-width; +} + +@mixin ct-chart-series-color($color) { + .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} { + stroke: $color; + } + + .#{$ct-class-slice-pie}, .#{$ct-class-area} { + fill: $color; + } +} + +@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) { + + .#{$ct-class-label} { + @include ct-chart-label($ct-text-color, $ct-text-size); + } + + .#{$ct-class-chart-line} .#{$ct-class-label}, + .#{$ct-class-chart-bar} .#{$ct-class-label} { + @include ct-flex(); + } + + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-end); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, center); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, center); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { + @include ct-align-justify(flex-end, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { + @include ct-align-justify(flex-start, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: start; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { + //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify); + @include ct-align-justify(center, flex-end); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { + @include ct-align-justify(center, flex-start); + // Fallback for browsers that don't support foreignObjects + text-anchor: end; + } + + .#{$ct-class-grid} { + @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray); + } + + .#{$ct-class-point} { + @include ct-chart-point($ct-point-size, $ct-point-shape); + } + + .#{$ct-class-line} { + @include ct-chart-line($ct-line-width); + } + + .#{$ct-class-area} { + @include ct-chart-area(); + } + + .#{$ct-class-bar} { + @include ct-chart-bar($ct-bar-width); + } + + .#{$ct-class-slice-donut} { + @include ct-chart-donut($ct-donut-width); + } + + @if $ct-include-colored-series { + @for $i from 0 to length($ct-series-names) { + .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} { + $color: nth($ct-series-colors, $i + 1); + + @include ct-chart-series-color($color); + } + } + } +} + +@if $ct-include-classes { + @include ct-chart(); + + @if $ct-include-alternative-responsive-containers { + @for $i from 0 to length($ct-scales-names) { + .#{nth($ct-scales-names, $i + 1)} { + @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1)); + } + } + } +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss new file mode 100644 index 0000000..0108ce3 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss @@ -0,0 +1,142 @@ +.from-check, +.form-check-radio { + margin-bottom: 12px; + position: relative; + +} + +.form-check{ + padding-left: 0; + .form-check-label{ + display: inline-block; + position: relative; + cursor: pointer; + padding-left: 35px; + line-height: 26px; + margin-bottom: 0; + } + + .form-check-sign::before, + .form-check-sign::after{ + font-family: 'FontAwesome'; + content: "\f096"; + display: inline-block; + color: $info-color; + position: absolute; + width: 19px; + height: 19px; + margin-top: -12px; + margin-left: -23px; + font-size: 21px; + cursor: pointer; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; + } + .form-check-sign::after{ + font-family: 'FontAwesome'; + content: "\f046"; + text-align: center; + opacity: 0; + color: $info-color; + border: 0; + background-color: inherit; + } + &.disabled{ + .form-check-label{ + color: $dark-gray; + opacity: .5; + cursor: not-allowed; + } + } + +} + +.form-check.disabled .form-check-label, +.form-check.disabled .form-check-label { + +} + +.form-check input[type="checkbox"], +.form-check-radio input[type="radio"]{ + opacity: 0; + position: absolute; + visibility: hidden; +} +.form-check input[type="checkbox"]:checked + .form-check-sign::after{ + opacity: 1; +} + +.form-control input[type="checkbox"]:disabled + .form-check-sign::before, +.checkbox input[type="checkbox"]:disabled + .form-check-sign::after{ + cursor: not-allowed; +} + +.form-check .form-check-label input[type="checkbox"]:disabled + .form-check-sign, +.form-check-radio input[type="radio"]:disabled + .form-check-sign{ + pointer-events: none !important; +} + +.form-check-radio{ + .form-check-label{ + padding-left: 2rem; + } + &.disabled{ + .form-check-label{ + color: $dark-gray; + opacity: .5; + cursor: not-allowed; + } + } +} + +.form-check-radio .form-check-sign::before{ + font-family: 'FontAwesome'; + content: "\f10c"; + font-size: 22px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + position: absolute; + opacity: .50; + left: 5px; + top: -5px; +} + +.form-check-label input[type="checkbox"]:checked + .form-check-sign:before{ + // background-color: #66615B; +} + +.form-check-radio input[type="radio"] + .form-check-sign:after, +.form-check-radio input[type="radio"] { + opacity: 0; + -webkit-transition: opacity 0.3s linear; + -moz-transition: opacity 0.3s linear; + -o-transition: opacity 0.3s linear; + -ms-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; + content:" "; + display: block; +} + +.form-check-radio input[type="radio"]:checked + .form-check-sign::after { + font-family: 'FontAwesome'; + content: "\f192"; + top: -5px; + position: absolute; + left: 5px; + opacity: 1; + font-size: 22px; +} + +.form-check-radio input[type="radio"]:checked + .form-check-sign::after{ + opacity: 1; +} + + +.form-check-radio input[type="radio"]:disabled + .form-check-sign::before, +.form-check-radio input[type="radio"]:disabled + .form-check-sign::after { + color: $dark-gray; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss new file mode 100644 index 0000000..8dd6aca --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss @@ -0,0 +1,137 @@ +.dropdown-menu{ + visibility: hidden; + margin: 0; + padding: 0; + border-radius: $border-radius-extreme; + display: block; + z-index: 9000; + position: absolute; + + @include opacity(0); + @include box-shadow($dropdown-shadow); + + .show &{ + @include opacity(1); + visibility: visible; + transform: translate3d(0px, 0px, 0px) !important; + } + .select &{ + border-radius: $border-radius-bottom; + @include box-shadow(none); + @include transform-origin($select-coordinates); + @include transform-scale(1); + @include transition($fast-transition-time, $transition-linear); + margin-top: -20px; + } + .select.show &{ + margin-top: -1px; + } + + .dropdown-item { + padding: $padding-base-vertical $padding-base-horizontal; + color: #333333; + + img{ + margin-top: -3px; + } + } + .dropdown-item:focus{ + outline: 0 !important; + } + + .btn-group.select &{ + min-width: 100%; + } + + > li:first-child > a{ + border-top-left-radius: $border-radius-extreme; + border-top-right-radius: $border-radius-extreme; + } + + > li:last-child > a{ + border-bottom-left-radius: $border-radius-extreme; + border-bottom-right-radius: $border-radius-extreme; + } + + .select & > li:first-child > a{ + border-radius: 0; + border-bottom: 0 none; + } + + .dropdown-item:hover, + .dropdown-item:focus { + background-color: $smoke-bg; + color: #333333; + opacity: 1; + text-decoration: none; + } + + &.dropdown-blue > li > a:hover, + &.dropdown-blue > li > a:focus{ + background-color: $light-blue; + } + &.dropdown-azure > li > a:hover, + &.dropdown-azure > li > a:focus{ + background-color: $light-azure; + } + &.ct-green > li > a:hover, + &.ct-green > li > a:focus{ + background-color: $light-green; + } + &.dropdown-orange > li > a:hover, + &.dropdown-orange > li > a:focus{ + background-color: $light-orange; + } + &.dropdown-red > li > a:hover, + &.dropdown-red > li > a:focus{ + background-color: $light-red; + } + + .dropdown-item{ + i[class*="nc-icon"]{ + font-size: 18px; + text-align: center; + line-height: 25px; + float: left; + padding-right: 10px; + } + } + + &.dropdown-menu-right{ + &:before, + &:after{ + right: 12px !important; + left: auto !important; + } + } + +} + +.dropdown-with-icons{ + > li > a{ + padding-left: 0px; + line-height: 28px; + } + i{ + text-align: center; + line-height: 28px; + float: left; + + &[class^="pe-"]{ + font-size: 24px; + width: 46px; + } + &[class^="fa"]{ + font-size: 14px; + width: 38px; + } + } +} + +//fix bug for the select items in btn-group +.btn-group.select{ + overflow: hidden; +} +.btn-group.select.show{ + overflow: visible; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss new file mode 100644 index 0000000..7ea2ee1 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss @@ -0,0 +1,75 @@ +.footer{ + background-color: $white-color; + + .footer-menu{ + height: 41px; + } + + nav > ul{ + list-style: none; + margin: 0; + padding: 0; + font-weight: normal; + + a:not(.btn){ + color: $dark-gray; + display: block; + margin-bottom: 3px; + &:hover, + &:focus{ + color: $default-states-color; + } + } + } + .social-area{ + padding: 15px 0; + h5{ + padding-bottom: 15px; + } + } + .social-area > a:not(.btn){ + color: $dark-gray; + display: inline-block; + vertical-align: top; + padding: $padding-social-a; + font-size: $font-size-large-navbar; + font-weight: normal; + line-height: $line-height; + text-align: center; + &:hover, + &:focus{ + color: $default-states-color; + } + } + .copyright{ + color: $default-states-color; + padding: 10px 15px; + margin: 10px 3px; + line-height: 20px; + font-size: $font-size-base; + } + hr{ + border-color: $medium-gray; + } + .title{ + color: $default-states-color; + } +} + +.footer-default{ + background-color: $smoke-bg; +} + +.footer:not(.footer-big){ + nav > ul{ + font-size: $font-size-base; + li{ + margin-left: 20px; + float: left; + } + a{ + padding: 10px 0px; + margin: 10px 10px 10px 0px; + } + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss new file mode 100644 index 0000000..2b9820a --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss @@ -0,0 +1,141 @@ +.form-control::-moz-placeholder{ + @include placeholder($medium-gray,1); +} +.form-control:-moz-placeholder{ + @include placeholder($medium-gray,1); +} +.form-control::-webkit-input-placeholder{ + @include placeholder($medium-gray,1); +} +.form-control:-ms-input-placeholder{ + @include placeholder($medium-gray,1); +} + +.form-control { + background-color: $white-bg; + border: 1px solid $light-gray; + border-radius: $border-radius-base; + color: #565656; + @include input-size($padding-base-vertical, $padding-base-horizontal - 4, $height-base); + @include box-shadow(none); + + &:focus{ + background-color: $white-bg; + border: 1px solid $medium-dark-gray; + @include box-shadow(none); + outline: 0 !important; + color: #333333; + } + + .has-success &, + .has-error &, + .has-success &:focus, + .has-error &:focus{ + border-color: $light-gray; + @include box-shadow(none); + } + + .has-success &{ + color: $success-color; + } + .has-success &:focus{ + border-color: $success-color; + } + .has-error &{ + color: $danger-color; + } + .has-error &:focus{ + border-color: $danger-color; + } + + & + .form-control-feedback{ + border-radius: $border-radius-large; + font-size: $font-size-base; + margin-top: -7px; + position: absolute; + right: 10px; + top: 50%; + vertical-align: middle; + } + + .open &{ + border-radius: $border-radius-base $border-radius-base 0 0; + border-bottom-color: transparent; + } +} + +.input-lg{ + height: 55px; + padding: $padding-large-vertical $padding-large-horizontal; +} + +.has-error{ + .form-control-feedback{ + color: $danger-color; + } +} +.has-success{ + .form-control-feedback{ + color: $success-color + } +} + + +.input-group-addon { + background-color: $white-color; + border: 1px solid $light-gray; + border-radius: $border-radius-base; + + .has-success &, + .has-error &{ + background-color: $white-color; + border: 1px solid $light-gray; + } + .has-error .form-control:focus + &{ + border-color: $danger-color; + color: $danger-color; + } + .has-success .form-control:focus + &{ + border-color: $success-color; + color: $success-color; + } + .form-control:focus + &, + .form-control:focus ~ &{ + background-color: $white-color; + border-color: $dark-gray; + } +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-right: 0 none; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-left: 0 none; +} +.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: $smoke-bg; + color: $default-color; + cursor: not-allowed; +} + +.input-group-btn .btn{ + border-width: $border-thin; + padding: $padding-round-vertical $padding-base-horizontal; +} +.input-group-btn .btn-default:not(.btn-fill){ + border-color: $medium-gray; +} + +.input-group-btn:last-child > .btn{ + margin-left: 0; +} + +.input-group-focus .input-group-addon{ + border-color: $dark-gray; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss new file mode 100644 index 0000000..c8e53ed --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss @@ -0,0 +1,129 @@ +/* General overwrite */ +body, +.wrapper{ + min-height: 100vh; + position: relative; +} +a{ + color: $info-color; + + &:hover, &:focus{ + color: $info-states-color; + text-decoration: none; + } +} + +a:focus, a:active, +button::-moz-focus-inner, +input::-moz-focus-inner, +input[type="reset"]::-moz-focus-inner, +input[type="button"]::-moz-focus-inner, +input[type="submit"]::-moz-focus-inner, +select::-moz-focus-inner, +input[type="file"] > input[type="button"]::-moz-focus-inner{ + outline:0; +} +.ui-slider-handle:focus, +.navbar-toggle, +input:focus { + outline : 0 !important; +} + +/* Animations */ +.form-control, +.input-group-addon, +.tagsinput, +.navbar, +.navbar .alert{ + @include transition($general-transition-time, $transition-linear); +} + +.sidebar .nav a, +.table > tbody > tr .td-actions .btn{ + @include transition($fast-transition-time, $transition-ease-in); +} + +.btn{ + @include transition($ultra-fast-transition-time, $transition-ease-in); +} +.fa{ + width: 18px; + text-align: center; +} +.margin-top{ + margin-top: 50px; +} + +.wrapper{ + position: relative; + top: 0; + height: 100vh; +} + +// documentation + +.page-header{ + .page-header-image{ + background-position: center center; + background-size: cover; + overflow: hidden; + width: 100%; + z-index: 1; + } + .title-container{ + color: #fff; + position: relative; + top: 250px; + z-index: 3; + } + .filter:after{ + background: rgba(0, 0, 0, 0) linear-gradient(to bottom, #9368e9 0%, #943bea 100%) repeat scroll 0 0 / 150% 150%; + content: ""; + display: block; + height: 100%; + left: 0; + opacity: 0.77; + position: absolute; + top: 0; + width: 100%; + z-index: 2; + } +} + +.documentation .page-header, +.documentation .page-header-image, +.documentation .page-header-image .filter:after{ + height: 100vh; +} + +.documentation .footer{ + z-index: 3; +} +.documentation .wrapper{ + margin-top: -61px; + height: 100vh; +} +.documentation .navbar{ + z-index: 21; +} + +.card-tasks{ + .card-body{ + .table{ + td{ + font-size: 14px; + + .btn{ + font-size: 14px; + } + .btn-info{ + margin-top: 3px; + padding-right: 0; + } + } + td:last-child{ + padding-right: 0; + } + } + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss new file mode 100644 index 0000000..33a9fff --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss @@ -0,0 +1,22 @@ +//Utilities + +@import "mixins/transparency"; +@import "mixins/vendor-prefixes"; + + +//Components + +@import "mixins/buttons"; +@import "mixins/inputs"; +@import "mixins/labels"; +@import "mixins/tabs"; + +@import "mixins/navbars"; +@import "mixins/icons"; +@import "mixins/social-buttons"; + +@import "mixins/morphing-buttons"; + +@import "mixins/cards"; + +@import "mixins/chartist"; \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss new file mode 100644 index 0000000..6d0f447 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss @@ -0,0 +1,379 @@ +.nav { + .nav-item{ + .nav-link:hover, + .nav-link:focus{ + background-color: transparent; + } + } + +} +.navbar{ + border: $none; + font-size: $font-size-navbar; + border-radius: 0; + min-height: 50px; + background-color: $white-navbar; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 5px 15px; + + .navbar-brand { + font-weight: 400; + margin: 5px 0px; + font-size: 20px; + color: $default-color; + + &:hover{ + color: #5e5e5e; + } + } + .navbar-toggler{ + width: 37px; + height: 27px; + vertical-align: middle; + outline: 0; + cursor: pointer; + + &.navbar-toggler-left{ + position: relative; + left: 0; + padding-left: 0; + } + + & .navbar-toggler-bar{ + width: 3px; + height: 3px; + border-radius: 50%; + margin: 0 auto; + } + .burger-lines{ + display: block; + position: relative; + background-color: #888; + width: 24px; + height: 2px; + border-radius: 1px; + margin: 4px auto; + } + } + + .dropdown.nav-item{ + .dropdown-toggle:after{ + margin-top: 8px; + } + } + + .navbar-nav{ + align-items: center; + + .nav-item{ + .nav-link{ + color: $default-color; + padding: $navbar-padding-a; + position: relative; + display: inline-flex; + line-height: 1.2; + + &.btn{ + margin: $navbar-margin-a-btn; + padding: $padding-base-vertical $padding-base-horizontal; + } + + &.btn-round{ + margin: $navbar-margin-a-btn-round; + } + + [class^="fa"]{ + font-size: $font-size-large + 1; + position: relative; + line-height: 40px; + top: 1px; + } + + &:hover{ + color: $info-color; + } + } + + .dropdown-menu{ + border-radius: $border-radius-extreme; + margin-top: -5px; + + .dropdown-item{ + &:first-child{ + border-top-left-radius: 10px; + border-top-right-radius: 10px; + } + &:last-child{ + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + } + } + + .divider{ + height: 1px; + margin: 5px 0; + overflow: hidden; + background-color: #e5e5e5; + } + } + } + + .notification{ + position: absolute; + background-color: #FB404B; + text-align: center; + border-radius: 10px; + min-width: 18px; + padding: 0 5px; + height: 18px; + font-size: 12px; + color: $white-color; + font-weight: bold; + line-height: 18px; + top: 0; + left: 7px; + } + + .dropdown-toggle:after{ + display: inline-block; + width: 0; + height: 0; + margin-left: 5px; + margin-top: 12px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid\9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } + + + } + .btn{ + margin: $navbar-margin-btn; + font-size: $font-size-base; + } + .btn-simple{ + font-size: $font-size-medium; + } + + &.fixed{ + width: calc(100% - #{$sidebar-width}); + right: 0; + left: auto; + border-radius: 0; + } + + .nc-icon{ + font-weight: 700; + } +} + +.navbar-transparent, [class*="navbar-ct"]{ + .navbar-brand{ + color: $white-color; + @include opacity(.9); + + &:focus, + &:hover{ + background-color: transparent; + @include opacity(1); + color: $white-color; + } + } + + .navbar-nav{ + .nav-item{ + .nav-link:not(.btn){ + color: $white-color; + border-color: $white-color; + @include opacity(0.8); + } + } + + .active, + .nav-item{ + .nav-link:not(.btn), + .nav-link:hover:not(.btn), + .nav-link:focus:not(.btn) { + background-color: transparent; + border-radius: 3px; + color: $white-color; + @include opacity(1); + } + } + + .nav .nav-item .nav-link.btn:hover{ + background-color: transparent; + } + + .show{ + .nav-link, + .nav-link:hover, + .nav-link:focus{ + background-color: transparent; + color: $white-color; + @include opacity(1); + } + } + } + + .btn-default{ + color: $white-color; + border-color: $white-color; + } + .btn-default.btn-fill{ + color: $dark-gray; + background-color: $white-color; + @include opacity(.9); + } + .btn-default.btn-fill:hover, + .btn-default.btn-fill:focus, + .btn-default.btn-fill:active, + .btn-default.btn-fill.active, + .show .dropdown-toggle.btn-fill.btn-default{ + border-color: $white-color; + @include opacity(1); + } + +} +.navbar-transparent{ + .dropdown-menu .divider{ + background-color: rgba($white-color,.2); + } +} + + +.navbar-default { + background-color: $white-navbar; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + + .navbar-nav{ + .nav-item{ + .nav-link:not(.btn){ + color: $dark-gray; + } + } + + .active .nav-link, + .active .nav-link:not(.btn):hover, + .active .nav-link:not(.btn):focus, + .nav-item .nav-link:not(.btn):hover, + .nav-item .nav-link:not(.btn):focus{ + background-color: transparent; + border-radius: 3px; + color: $info-color; + @include opacity(1); + } + + .show{ + .nav-link, + .nav-link:hover, + .nav-link:focus{ + background-color: transparent; + color: $info-color; + } + } + + + .navbar-toggle:hover,.navbar-toggle:focus { + background-color: transparent; + } + + } + + &:not(.navbar-transparent) .btn-default:hover{ + color: $info-color; + border-color: $info-color; + } + &:not(.navbar-transparent) .btn-neutral, + &:not(.navbar-transparent) .btn-neutral:hover, + &:not(.navbar-transparent) .btn-neutral:active{ + color: $dark-gray; + } +} + +/* Navbar with icons */ + +.navbar-icons{ + &.navbar .navbar-brand{ + margin-top: 12px; + margin-bottom: 12px; + } + .navbar-nav{ + .nav-item{ + .nav-link{ + text-align: center; + padding: $navbar-padding-a-icons; + margin: $navbar-margin-a-icons; + } + } + + [class^="pe"] { + font-size: 30px; + position: relative; + } + p { + margin: 3px 0 0; + } + } +} + +.navbar-form{ + @include box-shadow(none); + .form-control{ + @include light-form(); + height: 22px; + font-size: $font-size-navbar; + line-height: $line-height-general; + color: $light-gray; + } + .navbar-transparent & .form-control, + [class*="navbar-ct"] & .form-control{ + color: $white-color; + border: $none; + border-bottom: 1px solid rgba($white-color,.6); + } + +} + +.navbar-ct-blue{ + @include navbar-color($blue-navbar); +} +.navbar-ct-azure{ + @include navbar-color($azure-navbar); +} +.navbar-ct-green{ + @include navbar-color($green-navbar); +} +.navbar-ct-orange{ + @include navbar-color($orange-navbar); +} +.navbar-ct-red{ + @include navbar-color($red-navbar); +} + +.navbar-transparent{ + padding-top: 15px; + background-color: transparent; + border-bottom: 1px solid transparent; +} + +.navbar-toggle{ + margin-top: 19px; + margin-bottom: 19px; + border: $none; + + .icon-bar { + background-color: $white-color; + } + .navbar-collapse, + .navbar-form { + border-color: transparent; + } + + &.navbar-default .navbar-toggle:hover, + &.navbar-default .navbar-toggle:focus { + background-color: transparent; + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss new file mode 100644 index 0000000..d03a87d --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss @@ -0,0 +1,577 @@ +/*-------------------------------- + +nucleo-icons Web Font - built using nucleoapp.com +License - nucleoapp.com/license/ + +-------------------------------- */ +@font-face { + font-family: 'nucleo-icons'; + src: url('~@/assets/fonts/nucleo-icons.eot'); + src: url('~@/assets/fonts/nucleo-icons.eot') format('embedded-opentype'), + url('~@/assets/fonts/nucleo-icons.woff2') format('woff2'), + url('~@/assets/fonts/nucleo-icons.ttf') format('truetype'), + url('~@/assets/fonts/nucleo-icons.svg') format('svg'); + font-weight: normal; + font-style: normal; +} +/*------------------------ + base class definition +-------------------------*/ +.nc-icon { + display: inline-block; + font: normal normal normal 14px/1 'nucleo-icons'; + font-size: inherit; + speak: none; + text-transform: none; + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/*------------------------ + change icon size +-------------------------*/ +.nc-icon.lg { + font-size: 1.33333333em; + vertical-align: -16%; +} +.nc-icon.x2 { + font-size: 2em; +} +.nc-icon.x3 { + font-size: 3em; +} +/*---------------------------------- + add a square/circle background +-----------------------------------*/ +.nc-icon.square, +.nc-icon.circle { + padding: 0.33333333em; + vertical-align: -16%; + background-color: #eee; +} +.nc-icon.circle { + border-radius: 50%; +} +/*------------------------ + list icons +-------------------------*/ +.nc-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.nc-icon-ul > li { + position: relative; +} +.nc-icon-ul > li > .nc-icon { + position: absolute; + left: -1.57142857em; + top: 0.14285714em; + text-align: center; +} +.nc-icon-ul > li > .nc-icon.lg { + top: 0; + left: -1.35714286em; +} +.nc-icon-ul > li > .nc-icon.circle, +.nc-icon-ul > li > .nc-icon.square { + top: -0.19047619em; + left: -1.9047619em; +} + +.all-icons{ + .font-icon-list{ + .font-icon-detail i{ + font-size: 32px; + } + } +} +/*------------------------ + spinning icons +-------------------------*/ +.nc-icon.spin { + -webkit-animation: nc-icon-spin 2s infinite linear; + -moz-animation: nc-icon-spin 2s infinite linear; + animation: nc-icon-spin 2s infinite linear; +} +@-webkit-keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@-moz-keyframes nc-icon-spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(360deg); + } +} +@keyframes nc-icon-spin { + 0% { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + -moz-transform: rotate(360deg); + -ms-transform: rotate(360deg); + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} +/*------------------------ + rotated/flipped icons +-------------------------*/ +.nc-icon.rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.nc-icon.rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.nc-icon.rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.nc-icon.flip-y { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.nc-icon.flip-x { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/*------------------------ + font icons +-------------------------*/ + +.nc-air-baloon::before { + content: "\ea01"; +} + +.nc-album-2::before { + content: "\ea02"; +} + +.nc-alien-33::before { + content: "\ea03"; +} + +.nc-align-center::before { + content: "\ea04"; +} + +.nc-align-left-2::before { + content: "\ea05"; +} + +.nc-ambulance::before { + content: "\ea06"; +} + +.nc-android::before { + content: "\ea07"; +} + +.nc-app::before { + content: "\ea08"; +} + +.nc-apple::before { + content: "\ea09"; +} + +.nc-atom::before { + content: "\ea0a"; +} + +.nc-attach-87::before { + content: "\ea0b"; +} + +.nc-audio-92::before { + content: "\ea0c"; +} + +.nc-backpack::before { + content: "\ea0d"; +} + +.nc-badge::before { + content: "\ea0e"; +} + +.nc-bag::before { + content: "\ea0f"; +} + +.nc-bank::before { + content: "\ea10"; +} + +.nc-battery-81::before { + content: "\ea11"; +} + +.nc-bell-55::before { + content: "\ea12"; +} + +.nc-bold::before { + content: "\ea13"; +} + +.nc-bulb-63::before { + content: "\ea14"; +} + +.nc-bullet-list-67::before { + content: "\ea15"; +} + +.nc-bus-front-12::before { + content: "\ea16"; +} + +.nc-button-pause::before { + content: "\ea17"; +} + +.nc-button-play::before { + content: "\ea18"; +} + +.nc-button-power::before { + content: "\ea19"; +} + +.nc-camera-20::before { + content: "\ea1a"; +} + +.nc-caps-small::before { + content: "\ea1b"; +} + +.nc-cart-simple::before { + content: "\ea1c"; +} + +.nc-cctv::before { + content: "\ea1d"; +} + +.nc-chart-bar-32::before { + content: "\ea1e"; +} + +.nc-chart-pie-35::before { + content: "\ea1f"; +} + +.nc-chart-pie-36::before { + content: "\ea20"; +} + +.nc-chart::before { + content: "\ea21"; +} + +.nc-chat-round::before { + content: "\ea22"; +} + +.nc-check-2::before { + content: "\ea23"; +} + +.nc-circle-09::before { + content: "\ea24"; +} + +.nc-circle::before { + content: "\ea25"; +} + +.nc-cloud-download-93::before { + content: "\ea26"; +} + +.nc-cloud-upload-94::before { + content: "\ea27"; +} + +.nc-compass-05::before { + content: "\ea28"; +} + +.nc-controller-modern::before { + content: "\ea29"; +} + +.nc-credit-card::before { + content: "\ea2a"; +} + +.nc-delivery-fast::before { + content: "\ea2b"; +} + +.nc-email-83::before { + content: "\ea2c"; +} + +.nc-email-85::before { + content: "\ea2d"; +} + +.nc-explore-2::before { + content: "\ea2e"; +} + +.nc-fav-remove::before { + content: "\ea2f"; +} + +.nc-favourite-28::before { + content: "\ea30"; +} + +.nc-globe-2::before { + content: "\ea31"; +} + +.nc-grid-45::before { + content: "\ea32"; +} + +.nc-headphones-2::before { + content: "\ea33"; +} + +.nc-html5::before { + content: "\ea34"; +} + +.nc-istanbul::before { + content: "\ea35"; +} + +.nc-key-25::before { + content: "\ea36"; +} + +.nc-layers-3::before { + content: "\ea37"; +} + +.nc-light-3::before { + content: "\ea38"; +} + +.nc-lock-circle-open::before { + content: "\ea39"; +} + +.nc-map-big::before { + content: "\ea3a"; +} + +.nc-mobile::before { + content: "\ea3c"; +} + +.nc-money-coins::before { + content: "\ea3b"; +} + +.nc-note-03::before { + content: "\ea3d"; +} + +.nc-notes::before { + content: "\ea3e"; +} + +.nc-notification-70::before { + content: "\ea3f"; +} + +.nc-palette::before { + content: "\ea40"; +} + +.nc-paper-2::before { + content: "\ea41"; +} + +.nc-pin-3::before { + content: "\ea42"; +} + +.nc-planet::before { + content: "\ea43"; +} + +.nc-preferences-circle-rotate::before { + content: "\ea44"; +} + +.nc-puzzle-10::before { + content: "\ea45"; +} + +.nc-quote::before { + content: "\ea46"; +} + +.nc-refresh-02::before { + content: "\ea47"; +} + +.nc-ruler-pencil::before { + content: "\ea48"; +} + +.nc-satisfied::before { + content: "\ea49"; +} + +.nc-scissors::before { + content: "\ea4a"; +} + +.nc-send::before { + content: "\ea4b"; +} + +.nc-settings-90::before { + content: "\ea4c"; +} + +.nc-settings-gear-64::before { + content: "\ea4d"; +} + +.nc-settings-tool-66::before { + content: "\ea4e"; +} + +.nc-simple-add::before { + content: "\ea4f"; +} + +.nc-simple-delete::before { + content: "\ea50"; +} + +.nc-simple-remove::before { + content: "\ea51"; +} + +.nc-single-02::before { + content: "\ea52"; +} + +.nc-single-copy-04::before { + content: "\ea53"; +} + +.nc-spaceship::before { + content: "\ea54"; +} + +.nc-square-pin::before { + content: "\ea55"; +} + +.nc-stre-down::before { + content: "\ea56"; +} + +.nc-stre-left::before { + content: "\ea57"; +} + +.nc-stre-right::before { + content: "\ea58"; +} + +.nc-stre-up::before { + content: "\ea59"; +} + +.nc-sun-fog-29::before { + content: "\ea5a"; +} + +.nc-support-17::before { + content: "\ea5b"; +} + +.nc-tablet-2::before { + content: "\ea5c"; +} + +.nc-tag-content::before { + content: "\ea5d"; +} + +.nc-tap-01::before { + content: "\ea5e"; +} + +.nc-time-alarm::before { + content: "\ea5f"; +} + +.nc-tv-2::before { + content: "\ea60"; +} + +.nc-umbrella-13::before { + content: "\ea61"; +} + +.nc-vector::before { + content: "\ea62"; +} + +.nc-watch-time::before { + content: "\ea63"; +} + +.nc-zoom-split::before { + content: "\ea64"; +} + + +/* all icon font classes list here */ diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss new file mode 100644 index 0000000..9dc2764 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss @@ -0,0 +1,479 @@ +@media (min-width: 992px){ + .navbar-form { + margin-top: 21px; + margin-bottom: 21px; + padding-left: 5px; + padding-right: 5px; + } + .navbar-nav .nav-item .dropdown-menu, .dropdown .dropdown-menu{ + @include transform-scale(0); + @include transition($slow-transition-time, $transition-bezier); + } + .navbar-nav .nav-item.show .dropdown-menu, .dropdown.show .dropdown-menu{ + @include transform-scale(1); + @include transform-origin($dropdown-coordinates); + + } + .close-layer, + .nav-mobile-menu{ + display: none !important; + } + + .footer{ + height: 60px; + .footer-menu{ + float: left; + } + .copyright{ + float: right; + } + } + .navbar-nav .nav-item .dropdown-menu:before{ + border-bottom: 11px solid rgba(0, 0, 0, 0.2); + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + content: ""; + display: inline-block; + position: absolute; + left: 12px; + top: -11px; + } + .navbar-nav .nav-item .dropdown-menu:after { + border-bottom: 11px solid #FFFFFF; + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + content: ""; + display: inline-block; + position: absolute; + left: 12px; + top: -10px; + } + + .navbar-nav.navbar-right .nav-item .dropdown-menu:before{ + left: auto; + right: 12px; + } + + .navbar-nav.navbar-right .nav-item .dropdown-menu:after{ + left: auto; + right: 12px; + } + + .footer:not(.footer-big){ + nav > ul{ + li:first-child{ + margin-left: 0; + } + } + } + + .card{ + form{ + [class*="col-"]{ + padding: 6px; + } + [class*="col-"]:first-child{ + padding-left: 15px; + } + [class*="col-"]:last-child{ + padding-right: 15px; + } + } + } +} + +/* Changes for small display */ + +@media (max-width: 991px){ + + .sidebar{ + right: 0 !important; + left: auto; + position: fixed; + @include transform-translate-3d(262px); + @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + + .nav-open{ + .main-panel{ + position: absolute; + left: 0; + @include transform-translate-3d(-250px); + @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + + .sidebar{ + @include transform-translate-3d(10px); + @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + } + + .main-panel{ + @include transform-translate-3d(0px); + @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + } + + + .nav-item.active-pro{ + position: relative !important; + } + + .nav-mobile-menu{ + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + margin-bottom: 15px; + padding-bottom: 15px; + padding-top: 5px; + + .dropdown{ + .dropdown-menu{ + position: static !important; + float: none; + width: auto; + color: $white-color; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + + .dropdown-item{ + margin: 5px 15px 0px 40px; + border-radius: 4px; + color: $white-color; + opacity: .86; + padding: 8px 50px; + &:hover{ + background-color: rgba(255, 255, 255, 0.23) + } + } + } + + } + .nav-item{ + .nav-link{ + span{ + display: inline-block !important; + } + .no-icon{ + padding-left: 50px; + } + } + } + } + .main-panel{ + width: 100%; + } + + .navbar-transparent{ + padding-top: 15px; + background-color: rgba(0, 0, 0, 0.45); + } + body { + position: relative; + } + .wrapper{ + left: 0; + background-color: white; + } + + .navbar{ + padding-right: 30px; + padding-left: 30px; + } + + .navbar-nav{ + .nav-item{ + float: none; + position: relative; + display: block; + } + } + + body > .navbar-collapse { + position: fixed; + display: block; + top: 0; + height: 100%; + right: 0; + left: auto; + z-index: 1032; + visibility: visible; + background-color: #999; + overflow-y: visible; + border-top: none; + text-align: left; + padding: 0; + + @include transform-translate-x(260px); + @include transition (0.33s, cubic-bezier(0.685, 0.0473, 0.346, 1)); + > ul { + position: relative; + z-index: 4; + overflow-y:scroll; + height: calc(100vh - 61px); + width: 100%; + } + + &::before{ + top: 0; + left: 0; + height: 100%; + width: 100%; + position: absolute; + background-color: #282828; + display: block; + content: ""; + z-index: 1; + } + + .logo{ + position: relative; + z-index: 4; + } + + .nav li > a{ + padding: 10px 15px; + } + } + .nav-show .navbar-collapse{ + @include transform-translate-x(0px); + } + .nav-show .navbar .container{ + left: -250px; + } + .nav-show .wrapper{ + left: 0; + @include transform-translate-x(-260px); + } + .navbar-toggle .icon-bar { + display: block; + position: relative; + background: #fff; + width: 24px; + height: 2px; + border-radius: 1px; + margin: 0 auto; + } + + .navbar-header .navbar-toggle { + margin: 10px 15px 10px 0; + width: 40px; + height: 40px; + } + .bar1, + .bar2, + .bar3 { + outline: 1px solid transparent; + } + .bar1 { + top: 0px; + @include bar-animation($topbar-back); + } + .bar2 { + opacity: 1; + } + .bar3 { + bottom: 0px; + @include bar-animation($bottombar-back); + } + .toggled .bar1 { + top: 6px; + @include bar-animation($topbar-x); + } + .toggled .bar2 { + opacity: 0; + } + .toggled .bar3 { + bottom: 6px; + @include bar-animation($bottombar-x); + } + + @include topbar-x-rotation(); + @include topbar-back-rotation(); + @include bottombar-x-rotation(); + @include bottombar-back-rotation(); + + @-webkit-keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } + @-moz-keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } + @keyframes fadeIn { + 0% {opacity: 0;} + 100% {opacity: 1;} + } + + .dropdown-menu .divider{ + background-color: rgba(229, 229, 229, 0.15); + } + + .navbar-nav { + margin: 1px 0; + + .show .dropdown-menu .nav-item{ + .nav-link{ + padding: 10px 15px 10px 60px; + } + } + } + + [class*="navbar-"] .navbar-nav { + & > li > a, + > li > a:hover, + > li > a:focus, + .active > a, + .active > a:hover, + .active > a:focus, + .show .dropdown-menu > li > a, + .show .dropdown-menu > li > a:hover, + .show .dropdown-menu > li > a:focus, + .show .dropdown-menu > li > a:active { + color: white; + } + + & > li > a, + > li > a:hover, + > li > a:focus{ + opacity: .7; + background-color: transparent; + outline: none; + } + + .show .dropdown-menu > li > a:hover, + .show .dropdown-menu > li > a:focus{ + background-color: rgba(255,255,255, .1); + } + + + + &.navbar-nav .show .dropdown-menu > li > a:active { + opacity: 1; + } + + & .dropdown > a{ + &:hover .caret { + border-bottom-color: #fff; + border-top-color: #fff; + } + &:active .caret { + border-bottom-color: white; + border-top-color: white; + } + } + + } + + .dropdown-menu { + display: none; + } + .navbar-fixed-top { + -webkit-backface-visibility: hidden; + } + #bodyClick { + height: 100%; + width: 100%; + position: fixed; + opacity: 0; + top: 0; + left: auto; + right: 250px; + content: ""; + z-index: 9999; + overflow-x: hidden; + } + + .social-line .btn{ + margin: $margin-bottom; + } + .subscribe-line .form-control{ + margin: $margin-bottom; + } + .social-line.pull-right{ + float: none; + } + .social-area.pull-right{ + float: none !important; + } + .form-control + .form-control-feedback{ + margin-top: -8px; + } + .navbar-toggle:hover,.navbar-toggle:focus { + background-color: transparent !important; + } + .btn.dropdown-toggle{ + margin-bottom: 0; + } + .media-post .author{ + width: 20%; + float: none !important; + display: block; + margin: 0 auto 10px; + } + .media-post .media-body{ + width: 100%; + } + + .navbar-collapse.collapse{ + height: 100% !important; + } + .navbar-collapse.collapse.in { + display: block; + } + .navbar-header .collapse, .navbar-toggle { + display:block !important; + } + .navbar-header { + float:none; + } + .navbar-nav .show .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse{ + .navbar-nav p{ + line-height: 40px !important; + margin: 0; + } + + [class^="pe-7s-"]{ + float: left; + font-size: 20px; + margin-right: 10px; + } + } +} + +//overwrite table responsive for 768px screens + +@media (min-width: 992px){ + .table-full-width{ + margin-left: -15px; + margin-right: -15px; + } + .table-responsive{ + overflow: visible; + } + +} + +@media (max-width: 991px){ + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; + } + +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss new file mode 100644 index 0000000..bd64f52 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss @@ -0,0 +1,455 @@ +.sidebar, +body > .navbar-collapse{ + position: fixed; + height: 100vh; + top: 0; + bottom: 0; + left: 0; + width: 260px; + display: block; + z-index: 1; + color: #fff; + font-weight: 200; + background-size: cover; + background-position: center center; + + .sidebar-wrapper{ + position: relative; + max-height: calc(100vh - 75px); + min-height: 100%; + overflow: auto; + width: 260px; + z-index: 4; + padding-bottom: 20px; + } + + .sidebar-background{ + position: absolute; + z-index: 1; + height: 100%; + width: 100%; + display: block; + top: 0; + left: 0; + background-size: cover; + background-position: center center; + } + + .logo{ + padding: 10px 15px 9px 15px; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + position: relative; + z-index: 4; + + p{ + float: left; + font-size: 20px; + margin: 10px 10px; + color: $white-color; + line-height: 20px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .simple-text{ + text-transform: uppercase; + padding: $padding-small-vertical $padding-zero; + font-size: $font-size-large; + color: $white-color; + text-align: center; + font-weight: $font-weight-normal; + line-height: 30px; + display: flex; + align-items: center; + + .logo-img{ + width: 40px; + display: inline-flex; + justify-content: center; + align-items: center; + height: 40px; + margin-left: 0px; + margin-right: 10px; + background: white; + border-radius: 40px; + + img{ + max-width: 21px; + } + } + } + } + + .logo-tim{ + border-radius: 50%; + border: 1px solid #333; + display: block; + height: 61px; + width: 61px; + float: left; + overflow: hidden; + + img{ + width: 60px; + height: 60px; + } + } + + .nav{ + margin-top: 20px; + float: none; + display: block; + + li{ + .nav-link{ + color: $white-color; + margin: 5px 15px; + opacity: .86; + border-radius: 4px; + display: block; + padding: 10px 15px; + + &:hover{ + background: rgba(255, 255, 255, 0.13); + opacity: 1; + } + + p{ + margin: 0; + line-height: 31px; + font-size: 12px; + font-weight: 600; + text-transform: uppercase; + display: inline-flex; + } + + i{ + font-size: 28px; + margin-right: 15px; + width: 30px; + text-align: center; + vertical-align: middle; + float: left; + } + } + + &:hover .nav-link{ + background: rgba(255,255,255,0.13); + opacity: 1; + } + + &.active .nav-link{ + color: $white-color; + opacity: 1; + background: rgba(255,255,255,0.23); + + } + + &.separator{ + margin: 15px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + + & + .nav-item { + margin-top: 31px; + } + } + + } + + + + .caret{ + margin-top: 13px; + position: absolute; + right: 30px; + } + + .active-pro{ + position: absolute; + width: 100%; + bottom: 10px; + + a{ + color: $white-color !important; + + } + } + + .nav-link{ + color: $white-color; + margin: 5px 15px; + opacity: .86; + border-radius: 4px; + text-transform: uppercase; + line-height: 30px; + font-size: 12px; + font-weight: 600; + } + } + + .logo{ + padding: $navbar-padding-a; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + + p{ + float: left; + font-size: 20px; + margin: 10px 10px; + color: $white-color; + line-height: 20px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + .simple-text{ + text-transform: uppercase; + padding: $padding-small-vertical $padding-zero; + display: flex; + align-items: center; + font-size: $font-size-large; + color: $white-color; + text-align: center; + font-weight: $font-weight-normal; + line-height: 30px; + } + } + + .logo-tim{ + border-radius: 50%; + border: 1px solid #333; + display: block; + height: 61px; + width: 61px; + float: left; + overflow: hidden; + + img{ + width: 60px; + height: 60px; + } + } + + &:after, + &:before{ + display: block; + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 2; + } + + &:before{ + opacity: .33; + background: #000000; + } + + &:after{ + @include icon-gradient($new-purple, $purple-color-bottom); + z-index: 3; + opacity: 1; + } + + &[data-image]:after, + &.has-image:after{ + opacity: .77; + } + + &[data-color="black"]:after{ + @include icon-gradient($black-color-top, $black-color-bottom); + } + &[data-color="blue"]:after{ + @include icon-gradient($new-dark-blue, $blue-color-bottom); + } + &[data-color="azure"]:after{ + @include icon-gradient($new-blue, $azure-color-bottom); + } + &[data-color="green"]:after{ + @include icon-gradient($new-green, $green-color-bottom); + } + &[data-color="orange"]:after{ + @include icon-gradient($new-orange, $orange-color-bottom); + } + &[data-color="red"]:after{ + @include icon-gradient($new-red, $red-color-bottom); + } + &[data-color="purple"]:after{ + @include icon-gradient($new-purple, $purple-color-bottom); + } +} + + +.main-panel{ + background: rgba(203,203,210,.15); + position: relative; + float: right; + width: $sidebar-width; + min-height: 100%; + + > .content{ + padding: 30px 15px; + min-height: calc(100% - 123px); + } + + > .footer{ + border-top: 1px solid #e7e7e7; + } + + .navbar{ + margin-bottom: 0; + } +} + +.sidebar, +.main-panel{ + max-height: 100%; + height: 100%; + -webkit-transition-property: top,bottom; + transition-property: top,bottom; + -webkit-transition-duration: .2s,.2s; + transition-duration: .2s,.2s; + -webkit-transition-timing-function: linear,linear; + transition-timing-function: linear,linear; + -webkit-overflow-scrolling: touch; +} + + +.fixed-plugin{ + + .dropdown{ + .dropdown-menu{ + @include transform-translate-3d-0(-5%); + border-radius: 10px; + li.adjustments-line{ + border-bottom: 1px solid #ddd; + } + li{ + padding: 5px 2px !important; + } + .button-container{ + a{ + font-size: 14px; + } + &.show{ + @include transform-translate-3d-0(0%); + transform-origin: 0 0; + left: -303px !important; + } + } + + } + } + +} + +.fixed-plugin .dropdown .dropdown-menu{ + @include transform-translate-y-dropdown(-5%); + top: -40px !important; + opacity: 0; + left: -303px !important; + transform-origin: 0 0; +} +.fixed-plugin .dropdown.show .dropdown-menu{ + opacity: 1; + @include transform-translate-y-dropdown(0%); + transform-origin: 0 0; + left: -303px !important; +} + +.fixed-plugin .dropdown-menu:before, +.fixed-plugin .dropdown-menu:after{ + content: ""; + display: inline-block; + position: absolute; + top: 65px; + width: 16px; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + +} +.fixed-plugin .dropdown-menu:before{ + border-bottom: 16px solid rgba(0, 0, 0, 0); + border-left: 16px solid rgba(0,0,0,0.2); + border-top: 16px solid rgba(0,0,0,0); + right: -16px; +} + +.fixed-plugin .dropdown-menu:after{ + border-bottom: 16px solid rgba(0, 0, 0, 0); + border-left: 16px solid #fff; + border-top: 16px solid rgba(0,0,0,0); + right: -15px; +} + +.modal{ + &.show{ + .modal-dialog{ + -webkit-transform: translate(0, 30%); + -o-transform: translate(0, 30%); + transform: translate(0, 30%); + } + } + &.modal-mini{ + .modal-dialog{ + max-width: 255px; + margin: 0 auto; + } + } + .modal-content{ + .modal-header{ + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; + + .modal-profile{ + width: 80px; + height: 80px; + border-radius: 50%; + text-align: center; + line-height: 5.7; + box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.3); + + i{ + font-size: 32px; + padding-top: 24px; + } + } + } + + .modal-body{ + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + line-height: 1.9; + } + + .modal-body + .modal-footer{ + padding-top: 0; + } + + .modal-footer{ + border-top: none; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + -webkit-justify-content: space-between; + justify-content: space-between; + + .btn{ + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; + + &:hover, + &focus{ + text-decoration: none; + } + } + } + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss new file mode 100644 index 0000000..f3a9e9a --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss @@ -0,0 +1,99 @@ +.table{ + + .radio, + .checkbox{ + position: relative; + height: 20px; + display: block; + width: 20px; + padding: 0px 0px; + margin: 0px 5px; + text-align: center; + + .icons{ + left: 5px; + } + } + > thead > tr > th, + > tbody > tr > th, + > tfoot > tr > th, + > thead > tr > td, + > tbody > tr > td, + > tfoot > tr > td{ + padding: 12px 8px; + vertical-align: middle; + &:last-child { + width: 100%; + } + } + + > thead > tr > th{ + border-bottom-width: 1px; + font-size: $font-size-small; + text-transform: uppercase; + color: $dark-gray; + font-weight: $font-weight-normal; + padding-bottom: 5px; + border-top: none !important; + border-bottom: none; + text-align: left !important; + } + + .td-actions .btn{ + @include opacity(0.36); + + &.btn-xs{ + padding-left: 3px; + padding-right: 3px; + } + } + .td-actions{ + min-width: 90px; + } + + > tbody > tr{ + position: relative; + + &:hover{ + .td-actions .btn{ + @include opacity(1); + } + } + } + + .btn:focus{ + box-shadow: none !important; + } +} + +.table.table-sm { + + > thead > tr > th, + > tbody > tr > th, + > tfoot > tr > th, + > thead > tr > td, + > tbody > tr > td, + > tfoot > tr > td{ + padding: 6px 6px; + } + + > thead > tr > th, + > thead > th { + font-size: $font-size-small; + padding-bottom: 3px; + } + + > tbody > tr > td { + font-size: $font-size-small; + } +} + +.table-upgrade{ + .table{ + tr{ + td{ + width: 100% + } + } + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss new file mode 100644 index 0000000..a79f7da --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss @@ -0,0 +1,90 @@ +/* Font Smoothing */ +body, +h1, .h1, +h2, .h2, +h3, .h3, +h4, .h4, +h5, .h5, +h6, .h6, +p, +.navbar, +.brand, +.btn-simple, +.alert, +a, +.td-name, +td, +button.close{ + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: "Roboto","Helvetica Neue",Arial,sans-serif; + font-weight: $font-weight-normal; +} + +h1, .h1, h2, .h2, h3, .h3, h4, .h4{ + font-weight: $font-weight-light; + margin: $margin-large-vertical 0 $margin-base-vertical; +} + +h1, .h1 { + font-size: $font-size-h1; +} +h2, .h2{ + font-size: $font-size-h2; +} +h3, .h3{ + font-size: $font-size-h3; + margin: 20px 0 10px; +} +h4, .h4{ + font-size: $font-size-h4; + line-height: 30px; +} +h5, .h5 { + font-size: $font-size-h5; + margin-bottom: 15px; +} +h6, .h6{ + font-size: $font-size-h6; + font-weight: $font-weight-bold; + text-transform: uppercase; +} +p{ + font-size: $font-paragraph; + line-height: $line-height-general; +} + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { + color: $dark-gray; + font-weight: $font-weight-light; + line-height: $line-height-general; +} + +h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small { + font-size: 60%; +} + +h1 .subtitle{ + display: block; + margin: 0 0 $margin-large-vertical; +} + +.text-muted{ + color: #9A9A9A; +} +.text-primary, .text-primary:hover{ + color: #1D62F0 !important; +} +.text-info, .text-info:hover{ + color: $info-color !important; +} +.text-success, .text-success:hover{ + color: $success-color !important; +} +.text-warning, .text-warning:hover{ + color: $warning-color !important; +} +.text-danger, .text-danger:hover{ + color: $danger-color !important; +} + diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss new file mode 100644 index 0000000..eb147af --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss @@ -0,0 +1,263 @@ +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +$none: 0 !default; +$border-thin: 1px !default; +$border-thick: 2px !default; + +$white-color: #FFFFFF !default; +$white-bg: #FFFFFF !default; + +$smoke-bg: #F5F5F5 !default; + +$black-bg: rgba(30,30,30,.97) !default; + +$black-color: #333333 !default; +$black-hr: #444444 !default; + +$light-gray: #E3E3E3 !default; +$medium-gray: #DDDDDD !default; +$medium-dark-gray: #AAAAAA !default; +$dark-gray: #9A9A9A !default; + +$transparent-bg: transparent !default; + +$default-color: #888888 !default; +$default-bg: #888888 !default; +$default-states-color: #777777 !default; + +$primary-color: #3472F7 !default; +$primary-bg: #3472F7 !default; +$primary-states-color: #1D62F0 !default; + +$success-color: #87CB16 !default; +$success-bg: #87CB16 !default; +$success-states-color: #049F0C !default; + +$info-color: #1DC7EA !default; +$info-bg: #1DC7EA !default; +$info-states-color: lighten($info-color, 8%) !default; + +$warning-color: #FF9500 !default; +$warning-bg: #FF9500 !default; +$warning-states-color: #ED8D00 !default; + + +$danger-color: #FF4A55 !default; +$danger-bg: #FF4A55 !default; +$danger-states-color: #EE2D20 !default; + + + +$link-disabled-color: #666666 !default; + + +/* light colors */ +$light-blue: rgba($primary-color, .2); +$light-azure: rgba($info-color, .2); +$light-green: rgba($success-color, .2); +$light-orange: rgba($warning-color, .2); +$light-red: rgba($danger-color, .2); + + +//== Components +// + +$padding-base-vertical: 8px !default; +$padding-base-horizontal: 16px !default; + +$padding-round-vertical: 9px !default; +$padding-round-horizontal: 18px !default; + +$padding-simple-vertical: 10px !default; +$padding-simple-horizontal: 18px !default; + +$padding-large-vertical: 14px !default; +$padding-large-horizontal: 30px !default; + +$padding-small-vertical: 5px !default; +$padding-small-horizontal: 10px !default; + +$padding-xs-vertical: 1px !default; +$padding-xs-horizontal: 5px !default; + +$padding-label-vertical: 2px !default; +$padding-label-horizontal: 12px !default; + +$margin-large-vertical: 30px !default; +$margin-base-vertical: 15px !default; + +$padding-zero: 0px !default; + +$margin-bottom: 0 0 10px 0 !default; +$border-radius-small: 3px !default; +$border-radius-base: 4px !default; +$border-radius-large: 6px !default; +$border-radius-extreme: 10px !default; + +$border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default; +$border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default; + +$btn-round-radius: 30px !default; + +$height-base: 40px !default; + +$font-size-base: 14px !default; +$font-size-small: 12px !default; +$font-size-medium: 16px !default; +$font-size-large: 18px !default; +$font-size-large-navbar: 20px !default; + +$font-size-h1: 52px !default; +$font-size-h2: 36px !default; +$font-size-h3: 28px !default; +$font-size-h4: 22px !default; +$font-size-h5: 16px !default; +$font-size-h6: 14px !default; +$font-paragraph: 16px !default; +$font-size-navbar: 16px !default; +$font-size-small: 12px !default; + +$font-weight-light: 300 !default; +$font-weight-normal: 400 !default; +$font-weight-semi: 500 !default; +$font-weight-bold: 600 !default; + +$line-height-general: 1.5 !default; +$line-height: 20px !default; +$line-height-lg: 54px !default; + +$sidebar-width: calc(100% - 260px) !default; + + +$border-radius-top: 10px 10px 0 0 !default; +$border-radius-bottom: 0 0 10px 10px !default; + +$dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125); + +$general-transition-time: 300ms !default; + +$slow-transition-time: 370ms !default; +$dropdown-coordinates: 29px -50px !default; + +$fast-transition-time: 150ms !default; + +$ultra-fast-transition-time: 100ms !default; + +$select-coordinates: 50% -40px !default; + +$transition-linear: linear !default; +$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default; +$transition-ease: ease 0s; +$transition-ease-in: ease-in !default; +$transition-ease-out: ease-out !default; + + +$navbar-padding-a: 10px 15px; +$navbar-margin-a: 10px 3px; + +$padding-social-a: 10px 5px; + +$navbar-margin-a-btn: 15px 3px; +$navbar-margin-a-btn-round: 16px 3px; + +$navbar-padding-a-icons: 6px 15px; +$navbar-margin-a-icons: 6px 3px; + +$navbar-padding-brand: 15px 15px; +$navbar-margin-brand: 5px 0px; + +$navbar-margin-brand-icons: 12px auto; + +$navbar-margin-btn: 15px 3px; + +$height-icon: 64px !default; +$width-icon: 64px !default; +$padding-icon: 12px !default; +$border-radius-icon: 15px !default; + +$size-icon: 64px; +$size-icon-sm: 32px; + + +$height-icon-sm: 32px; +$width-icon-sm: 32px; +$padding-icon-sm: 4px; +$border-radius-icon-sm: 7px; + +$height-icon-message: 40px; +$width-icon-message: 40px; + +$height-icon-message-sm: 20px; +$width-icon-message-sm: 20px; + +$default-color-top: #d9d9d9 !default; +$default-color-bottom: #909297 !default; + +$blue-color-top: #4087ea; +$blue-color-bottom: #533ce1; + +$azure-color-top: #45c0fd; +$azure-color-bottom: #4091ff; + +$green-color-top: #a1eb3a; +$green-color-bottom: #6dc030; + +$orange-color-top: #ffb33b; +$orange-color-bottom: #ff5221; + +$red-color-top: #ff3b30; +$red-color-bottom: #bb0502; + +$purple-color-top: #df55e1; +$purple-color-bottom: #943bea; + +$pink-color-top: #ff2a63; +$pink-color-bottom: #ff2e2e; + +$black-color-top: #292929; +$black-color-bottom: #0e0e0e; + +$social-facebook: #3b5998; +$social-twitter: #55acee; +$social-pinterest: #cc2127; +$social-google: #dd4b39; +$social-linkedin: #0976b4; +$social-dribbble: #ea4c89; +$social-github: #333333; +$social-youtube: #e52d27; +$social-stumbleupon: #eb4924; +$social-reddit: #ff4500; +$social-tumblr: #35465c; +$social-behance: #1769ff; + + +$filter-blue: darken($primary-color, 10%); +$filter-azure: darken($info-color, 10%); +$filter-green: darken($success-color, 10%); +$filter-orange: darken($warning-color, 10%); +$filter-red: darken($danger-color, 10%); + + +$new-blue: #1DC7EA; +$new-purple: #9368E9; +$new-red: #FB404B; +$new-green: #87CB16; +$new-orange: #FFA534; +$new-dark-blue: #1F77D0; +$new-black: #5e5e5e; + + +$topbar-x: topbar-x !default; +$topbar-back: topbar-back !default; +$bottombar-x: bottombar-x !default; +$bottombar-back: bottombar-back !default; + + +$white-navbar: rgba(#FFFFFF, .96); +$blue-navbar: lighten($new-dark-blue, 10%); +$azure-navbar: lighten($new-blue, 15%); +$green-navbar: lighten($new-green, 10%); +$orange-navbar: lighten($new-orange, 10%); +$red-navbar: lighten($new-red, 10%); diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss new file mode 100644 index 0000000..8322b05 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss @@ -0,0 +1,70 @@ +// Mixin for generating new styles +@mixin btn-styles($btn-color, $btn-states-color) { + border-color: $btn-color; + color: $btn-color; + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle { + background-color: $transparent-bg; + color: $btn-states-color; + border-color: $btn-states-color; + } + + &.disabled, + &:disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &.focus, + &:active, + &.active { + background-color: $transparent-bg; + border-color: $btn-color; + } + } + + + &.btn-fill { + color: $white-color; + background-color: $btn-color; + @include opacity(1); + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle{ + background-color: $btn-states-color; + color: $white-color; + } + + .caret{ + border-top-color: $white-color; + } + } + + .caret{ + border-top-color: $btn-color; + } +} + + +@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){ + font-size: $font-size; + border-radius: $border; + padding: $padding-vertical $padding-horizontal; + + &.btn-round{ + padding: $padding-vertical + 1 $padding-horizontal; + } + + &.btn-simple{ + padding: $padding-vertical + 2 $padding-horizontal; + } + +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss new file mode 100644 index 0000000..af1f955 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss @@ -0,0 +1,8 @@ +@mixin filter($color){ + @if $color == #FFFFFF{ + background-color: rgba($color,.91); + } @else { + background-color: rgba($color,.69); + } +} + diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss new file mode 100644 index 0000000..c3b7efa --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss @@ -0,0 +1,85 @@ +// Scales for responsive SVG containers +$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default; +$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default; + +// Class names to be used when generating CSS +$ct-class-chart: ct-chart !default; +$ct-class-chart-line: ct-chart-line !default; +$ct-class-chart-bar: ct-chart-bar !default; +$ct-class-horizontal-bars: ct-horizontal-bars !default; +$ct-class-chart-pie: ct-chart-pie !default; +$ct-class-chart-donut: ct-chart-donut !default; +$ct-class-label: ct-label !default; +$ct-class-series: ct-series !default; +$ct-class-line: ct-line !default; +$ct-class-point: ct-point !default; +$ct-class-area: ct-area !default; +$ct-class-bar: ct-bar !default; +$ct-class-slice-pie: ct-slice-pie !default; +$ct-class-slice-donut: ct-slice-donut !default; +$ct-class-grid: ct-grid !default; +$ct-class-vertical: ct-vertical !default; +$ct-class-horizontal: ct-horizontal !default; +$ct-class-start: ct-start !default; +$ct-class-end: ct-end !default; + +// Container ratio +$ct-container-ratio: (1/1.618) !default; + +// Text styles for labels +$ct-text-color: rgba(0, 0, 0, 0.4) !default; +$ct-text-size: 1.3rem !default; +$ct-text-align: flex-start !default; +$ct-text-justify: flex-start !default; +$ct-text-line-height: 1; + +// Grid styles +$ct-grid-color: rgba(0, 0, 0, 0.2) !default; +$ct-grid-dasharray: 2px !default; +$ct-grid-width: 1px !default; + +// Line chart properties +$ct-line-width: 3px !default; +$ct-line-dasharray: false !default; +$ct-point-size: 8px !default; +// Line chart point, can be either round or square +$ct-point-shape: round !default; +// Area fill transparency between 0 and 1 +$ct-area-opacity: 0.8 !default; + +// Bar chart bar width +$ct-bar-width: 10px !default; + +// Donut width (If donut width is to big it can cause issues where the shape gets distorted) +$ct-donut-width: 60px !default; + +// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you +// should set this property to false +$ct-include-classes: true !default; + +// If this is set to true the CSS will contain colored series. You can extend or change the color with the +// properties below +$ct-include-colored-series: $ct-include-classes !default; + +// If set to true this will include all responsive container variations using the scales defined at the top of the script +$ct-include-alternative-responsive-containers: $ct-include-classes !default; + +// Series names and colors. This can be extended or customized as desired. Just add more series and colors. +$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default; +$ct-series-colors: ( + $new-blue, + $new-red, + $new-orange, + $new-purple, + $new-green, + $new-dark-blue, + $new-black, + $social-google, + $social-tumblr, + $social-youtube, + $social-twitter, + $social-pinterest, + $social-behance, + #6188e2, + #a748ca +) !default; diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss new file mode 100644 index 0000000..80df4df --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss @@ -0,0 +1,13 @@ +@mixin icon-background ($icon-url){ + background-image : url($icon-url); + +} + +@mixin icon-shape ($size, $padding, $border-radius) { + height: $size; + width: $size; + padding: $padding; + border-radius: $border-radius; + display: inline-table; + +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss new file mode 100644 index 0000000..870c918 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss @@ -0,0 +1,17 @@ +@mixin input-size($padding-vertical, $padding-horizontal, $height){ + padding: $padding-vertical $padding-horizontal; + height: $height; +} + +@mixin placeholder($color, $opacity){ + color: $color; + @include opacity(1); +} + +@mixin light-form(){ + border-radius: 0; + border:0; + padding: 0; + background-color: transparent; + +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss new file mode 100644 index 0000000..8a2bdd5 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss @@ -0,0 +1,21 @@ +@mixin label-style(){ + padding: $padding-label-vertical $padding-label-horizontal; + border: 1px solid $default-color; + border-radius: $border-radius-small; + color: $default-color; + font-weight: $font-weight-semi; + font-size: $font-size-small; + text-transform: uppercase; + display: inline-block; + vertical-align: middle; +} + +@mixin label-color($color){ + border-color: $color; + color: $color; +} +@mixin label-color-fill($color){ + border-color: $color; + color: $white-color; + background-color: $color; +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss new file mode 100644 index 0000000..1a4e986 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss @@ -0,0 +1,34 @@ +$prefixes: ('', '-moz-', '-webkit-', '-ms-') !default; + +@mixin circle-animation(){ + @for $i from 0 to length($prefixes) { + @include circle-animation-details(nth($prefixes, $i + 1)); + } +} + +@mixin circle-animation-details($name){ + #{$name}animation-name: spin; + #{$name}animation-duration: 1250ms; + #{$name}animation-iteration-count: infinite; + #{$name}animation-timing-function: linear; + +} +@keyframes spin { + from { transform:rotate(0deg); } + to { transform:rotate(360deg); } +} + +@-webkit-keyframes spin { + from { -webkit-transform: rotate(0deg); } + to { -webkit-transform: rotate(360deg); } +} + +@-moz-keyframes spin { + from { -moz-transform: rotate(0deg); } + to { -moz-transform: rotate(360deg); } +} + +@-ms-keyframes spin { + from { -ms-transform: rotate(0deg); } + to { -ms-transform: rotate(360deg); } +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss new file mode 100644 index 0000000..6f50046 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss @@ -0,0 +1,11 @@ +@mixin navbar-color($color){ + background-color: $color; +} + +@mixin center-item(){ + left: 0; + right: 0; + margin-right: auto; + margin-left: auto; + position: absolute; +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss new file mode 100644 index 0000000..38a7d4b --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss @@ -0,0 +1,43 @@ +@mixin social-buttons-color ($color){ + + border-color: $color; + color: $color; + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle { + background-color: $transparent-bg; + color: $color; + border-color: $color; + opacity: 1; + } + + &:disabled, + &[disabled], + &.disabled { + background-color: $transparent-bg; + border-color: $color; + } + + &.btn-fill { + color: $white-color; + background-color: $color; + opacity: 0.9; + + &:hover, + &:focus, + &:active, + &.active, + .open > &.dropdown-toggle{ + background-color: $color; + color: $white-color; + opacity: 1; + } + + } + + +} + \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss new file mode 100644 index 0000000..edf6f58 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss @@ -0,0 +1,4 @@ +@mixin pill-style($color){ + border: 1px solid $color; + color: $color; +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss new file mode 100644 index 0000000..da32b74 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss @@ -0,0 +1,20 @@ +// Opacity + +@mixin opacity($opacity) { + opacity: $opacity; + // IE8 filter + $opacity-ie: ($opacity * 100); + filter: #{alpha(opacity=$opacity-ie)}; +} + +@mixin black-filter($opacity){ + top: 0; + left: 0; + height: 100%; + width: 100%; + position: absolute; + background-color: rgba(17,17,17,$opacity); + display: block; + content: ""; + z-index: 1; +} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss new file mode 100644 index 0000000..037bd44 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss @@ -0,0 +1,211 @@ +// User select +// For selecting text on the page + +@mixin user-select($select) { + -webkit-user-select: $select; + -moz-user-select: $select; + -ms-user-select: $select; // IE10+ + user-select: $select; +} + +@mixin box-shadow($shadow...) { + -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 + box-shadow: $shadow; +} + +// Box sizing +@mixin box-sizing($boxmodel) { + -webkit-box-sizing: $boxmodel; + -moz-box-sizing: $boxmodel; + box-sizing: $boxmodel; +} + + +@mixin transition($time, $type){ + -webkit-transition: all $time $type; + -moz-transition: all $time $type; + -o-transition: all $time $type; + -ms-transition: all $time $type; + transition: all $time $type; +} + +@mixin transform-scale($value){ + -webkit-transform: scale($value); + -moz-transform: scale($value); + -o-transform: scale($value); + -ms-transform: scale($value); + transform: scale($value); +} + +@mixin transform-translate-x($value){ + -webkit-transform: translate3d($value, 0, 0); + -moz-transform: translate3d($value, 0, 0); + -o-transform: translate3d($value, 0, 0); + -ms-transform: translate3d($value, 0, 0); + transform: translate3d($value, 0, 0); +} + +@mixin transform-translate-3d($value){ + -webkit-transform: translate3d($value, 0, 0); + -moz-transform: translate3d($value, 0, 0); + -o-transform: translate3d($value, 0, 0); + -ms-transform: translate3d($value, 0, 0); + transform: translate3d($value, 0, 0) !important; +} + +@mixin transform-translate-y-dropdown($value){ + -webkit-transform: translate3d(0, $value, 0) !important; + -moz-transform: translate3d(0, $value, 0) !important; + -o-transform: translate3d(0, $value, 0) !important; + -ms-transform: translate3d(0, $value, 0) !important; + transform: translate3d(0, $value, 0) !important; +} + +@mixin transform-translate-3d-0($value){ + -webkit-transform: translate3d(0, $value, 0) !important; + -moz-transform: translate3d(0, $value, 0) !important; + -o-transform: translate3d(0, $value, 0) !important; + -ms-transform: translate3d(0, $value, 0) !important; + transform: translate3d(0, $value, 0) !important; +} + +@mixin transform-origin($coordinates){ + -webkit-transform-origin: $coordinates; + -moz-transform-origin: $coordinates; + -o-transform-origin: $coordinates; + -ms-transform-origin: $coordinates; + transform-origin: $coordinates; +} + +@mixin icon-gradient ($top-color, $bottom-color){ + background: $top-color; + background: -moz-linear-gradient(top, $top-color 0%, $bottom-color 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top-color), color-stop(100%,$bottom-color)); + background: -webkit-linear-gradient(top, $top-color 0%,$bottom-color 100%); + background: -o-linear-gradient(top, $top-color 0%,$bottom-color 100%); + background: -ms-linear-gradient(top, $top-color 0%,$bottom-color 100%); + background: linear-gradient(to bottom, $top-color 0%,$bottom-color 100%); + background-size: 150% 150%; +} + +@mixin radial-gradient($extern-color, $center-color){ + background: $extern-color; + background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */ + background-size: 550% 450%; +} + +@mixin vertical-align { + position: relative; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} + +@mixin rotate-180(){ + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +@mixin bar-animation($type){ + -webkit-animation: $type 500ms linear 0s; + -moz-animation: $type 500ms linear 0s; + animation: $type 500ms 0s; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} + +@mixin topbar-x-rotation(){ + @keyframes topbar-x { + 0% {top: 0px; transform: rotate(0deg); } + 45% {top: 6px; transform: rotate(145deg); } + 75% {transform: rotate(130deg); } + 100% {transform: rotate(135deg); } + } + @-webkit-keyframes topbar-x { + 0% {top: 0px; -webkit-transform: rotate(0deg); } + 45% {top: 6px; -webkit-transform: rotate(145deg); } + 75% {-webkit-transform: rotate(130deg); } + 100% { -webkit-transform: rotate(135deg); } + } + @-moz-keyframes topbar-x { + 0% {top: 0px; -moz-transform: rotate(0deg); } + 45% {top: 6px; -moz-transform: rotate(145deg); } + 75% {-moz-transform: rotate(130deg); } + 100% { -moz-transform: rotate(135deg); } + } +} + +@mixin topbar-back-rotation(){ + @keyframes topbar-back { + 0% { top: 6px; transform: rotate(135deg); } + 45% { transform: rotate(-10deg); } + 75% { transform: rotate(5deg); } + 100% { top: 0px; transform: rotate(0); } + } + + @-webkit-keyframes topbar-back { + 0% { top: 6px; -webkit-transform: rotate(135deg); } + 45% { -webkit-transform: rotate(-10deg); } + 75% { -webkit-transform: rotate(5deg); } + 100% { top: 0px; -webkit-transform: rotate(0); } + } + + @-moz-keyframes topbar-back { + 0% { top: 6px; -moz-transform: rotate(135deg); } + 45% { -moz-transform: rotate(-10deg); } + 75% { -moz-transform: rotate(5deg); } + 100% { top: 0px; -moz-transform: rotate(0); } + } +} + +@mixin bottombar-x-rotation(){ + @keyframes bottombar-x { + 0% {bottom: 0px; transform: rotate(0deg);} + 45% {bottom: 6px; transform: rotate(-145deg);} + 75% {transform: rotate(-130deg);} + 100% {transform: rotate(-135deg);} + } + @-webkit-keyframes bottombar-x { + 0% {bottom: 0px; -webkit-transform: rotate(0deg);} + 45% {bottom: 6px; -webkit-transform: rotate(-145deg);} + 75% {-webkit-transform: rotate(-130deg);} + 100% {-webkit-transform: rotate(-135deg);} + } + @-moz-keyframes bottombar-x { + 0% {bottom: 0px; -moz-transform: rotate(0deg);} + 45% {bottom: 6px; -moz-transform: rotate(-145deg);} + 75% {-moz-transform: rotate(-130deg);} + 100% {-moz-transform: rotate(-135deg);} + } +} + +@mixin bottombar-back-rotation{ + @keyframes bottombar-back { + 0% { bottom: 6px;transform: rotate(-135deg);} + 45% { transform: rotate(10deg);} + 75% { transform: rotate(-5deg);} + 100% { bottom: 0px;transform: rotate(0);} + } + @-webkit-keyframes bottombar-back { + 0% {bottom: 6px;-webkit-transform: rotate(-135deg);} + 45% {-webkit-transform: rotate(10deg);} + 75% {-webkit-transform: rotate(-5deg);} + 100% {bottom: 0px;-webkit-transform: rotate(0);} + } + @-moz-keyframes bottombar-back { + 0% {bottom: 6px;-moz-transform: rotate(-135deg);} + 45% {-moz-transform: rotate(10deg);} + 75% {-moz-transform: rotate(-5deg);} + 100% {bottom: 0px;-moz-transform: rotate(0);} + } + +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss new file mode 100644 index 0000000..387d152 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + +// This file was modified by Creative Tim to keep only the animation that we need for Bootstrap Notify + + + + + + + + + + + + + + + +@charset "UTF-8"; + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +.animated.bounceIn, +.animated.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +.animated.flipOutX, +.animated.flipOutY { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +@-webkit-keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + + + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss new file mode 100644 index 0000000..1cc2d3a --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss @@ -0,0 +1,463 @@ +/*! + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +$bs-datetimepicker-timepicker-font-size: 1.2em !default; +$bs-datetimepicker-active-bg: $info-color !default; +$bs-datetimepicker-active-color: $white-color !default; +$bs-datetimepicker-border-radius: $border-radius-base; +$bs-datetimepicker-btn-hover-bg: $light-gray !default; +$bs-datetimepicker-disabled-color: $medium-gray !default; +$bs-datetimepicker-alternate-color: $medium-gray !default; +$bs-datetimepicker-secondary-border-color: #ccc !default; +$bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2) !default; +$bs-datetimepicker-primary-border-color: white !default; +$bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !default; + + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + + +.bootstrap-datetimepicker-widget { + list-style: none; + + + &.dropdown-menu { + padding: 4px; + width: 19em; + + &.timepicker-sbs { + @media (min-width: $screen-sm-min) { + width: 38em; + } + + @media (min-width: $screen-md-min) { + width: 38em; + } + + @media (min-width: $screen-lg-min) { + width: 38em; + } + } + + &.bottom { + + &:before { + border-bottom: 11px solid rgba(0, 0, 0, 0.2); + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + content: ""; + display: inline-block; + position: absolute; + left: 12px; + top: -11px; + } + + &:after { + border-bottom: 11px solid #FFFFFF; + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + content: ""; + display: inline-block; + position: absolute; + left: 12px; + top: -10px; + } + } + + &.top { + margin-top: auto; + margin-bottom: -20px; + + &.open{ + margin-top: auto; + margin-bottom: 5px; + } + + &:before { + border-top: 11px solid rgba(0, 0, 0, 0.2); + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + border-bottom: none; + content: ""; + display: inline-block; + position: absolute; + left: 12px; + bottom: -11px; + top: auto; + } + + &:after { + border-top: 11px solid #FFFFFF; + border-left: 11px solid rgba(0, 0, 0, 0); + border-right: 11px solid rgba(0, 0, 0, 0); + border-bottom: none; + content: ""; + display: inline-block; + position: absolute; + left: 12px; + bottom: -10px; + top: auto; + } + } + + + + &.pull-right { + &:before { + left: auto; + right: 6px; + } + + &:after { + left: auto; + right: 7px; + } + } + + &.open{ + visibility: visible !important; + opacity: 1 !important; + top: 125px !important; + font-size: 14px !important; + } + } + + .list-unstyled { + margin: 0; + } + + a[data-action] { + padding: 6px 0; + border-width: 0; + } + + a[data-action]:active { + box-shadow: none; + } + + .timepicker-hour, .timepicker-minute, .timepicker-second { + width: 56px; + height: 56px; + font-weight: $font-weight-light; + font-size: $font-size-h4; + margin: 3px; + border-radius: 50%; + } + + button[data-action] { + padding: 6px; + } + + .btn[data-action="incrementHours"]::after { + @extend .sr-only; + content: "Increment Hours"; + } + + .btn[data-action="incrementMinutes"]::after { + @extend .sr-only; + content: "Increment Minutes"; + } + + .btn[data-action="decrementHours"]::after { + @extend .sr-only; + content: "Decrement Hours"; + } + + .btn[data-action="decrementMinutes"]::after { + @extend .sr-only; + content: "Decrement Minutes"; + } + + .btn[data-action="showHours"]::after { + @extend .sr-only; + content: "Show Hours"; + } + + .btn[data-action="showMinutes"]::after { + @extend .sr-only; + content: "Show Minutes"; + } + + .btn[data-action="togglePeriod"]::after { + @extend .sr-only; + content: "Toggle AM/PM"; + } + + .btn[data-action="clear"]::after { + @extend .sr-only; + content: "Clear the picker"; + } + + .btn[data-action="today"]::after { + @extend .sr-only; + content: "Set the date to today"; + } + + .picker-switch { + text-align: center; + border-radius: $bs-datetimepicker-border-radius; + font-size: 14px; + + &::after { + @extend .sr-only; + content: "Toggle Date and Time Screens"; + } + + td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; + + span { + line-height: 2.5; + height: 2.5em; + width: 100%; + border-radius: $bs-datetimepicker-border-radius; + margin: 2px 0px !important; + } + + a, + a:hover{ + color: $info-color; + } + } + } + + table { + width: 100%; + margin: 0; + + + & td > div, + & th > div { + // @extend .animation-transition-fast; + text-align: center; + + } + + + & th { + // @extend .animation-transition-fast; + + height: 20px; + line-height: 20px; + width: 20px; + + &.picker-switch { + width: 145px; + } + + &.disabled, + &.disabled:hover { + background: none; + color: $bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + &.prev span, + &.next span{ + border-radius: $bs-datetimepicker-border-radius; + height: 27px; + width: 27px; + line-height: 28px; + font-size: 12px; + border-radius: 50%; + text-align: center; + + } + + &.prev::after { + @extend .sr-only; + content: "Previous Month"; + } + + &.next::after { + @extend .sr-only; + content: "Next Month"; + } + + &.dow{ + text-align: center; + border-bottom: 1px solid $light-gray; + font-size: $font-size-small; + text-transform: uppercase; + color: $dark-gray; + font-weight: $font-weight-normal; + padding-bottom: 5px; + padding-top: $padding-default-vertical; + } + } + + & thead tr:first-child th{ + cursor: pointer; + + &:hover span, + &.picker-switch:hover{ + background: $bs-datetimepicker-btn-hover-bg; + } + } + + & td{ + > div { + border-radius: $bs-datetimepicker-border-radius; + + height: 54px; + line-height: 54px; + width: 54px; + text-align: center; + } + + &.cw > div { + font-size: .8em; + height: 20px; + line-height: 20px; + color: $bs-datetimepicker-alternate-color; + } + + &.day > div { + height: 30px; + line-height: 30px; + width: 30px; + text-align: center; + padding: 0px; + border-radius: 50%; + } + + &.minute > div, + &.hour > div{ + border-radius: 50%; + } + + &.day:hover > div, + &.hour:hover > div, + &.minute:hover > div, + &.second:hover > div { + background: $bs-datetimepicker-btn-hover-bg; + cursor: pointer; + } + + &.old > div, + &.new > div{ + color: $bs-datetimepicker-alternate-color; + } + + &.today > div{ + position: relative; + + &:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: $bs-datetimepicker-active-bg; + border-top-color: $bs-datetimepicker-secondary-border-color-rgba; + position: absolute; + bottom: 4px; + right: 4px; + } + } + + &.active > div, + &.active:hover > div { + background-color: $info-bg; + color: $bs-datetimepicker-active-color; + + } + + &.active.today:before > div{ + border-bottom-color: #fff; + } + + &.disabled > div, + &.disabled:hover > div { + background: none; + color: $bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + span { + // @extend .animation-transition-fast; + + display: inline-block; + width: 56px; + height: 56px; + line-height: 56px; + margin: 3px 3px; + cursor: pointer; + border-radius: 50%; + text-align: center; + + &:hover { + background: $bs-datetimepicker-btn-hover-bg; + } + + &.active { + background-color: $bs-datetimepicker-active-bg; + color: $bs-datetimepicker-active-color; + } + + &.old { + color: $bs-datetimepicker-alternate-color; + } + + &.disabled, + &.disabled:hover { + background: none; + color: $bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + } + } + } + + .timepicker-picker, + .timepicker-hours, + .timepicker-minutes{ + span{ + border-radius: 50% !important; + } + + .table-condensed{ + td{ + a{ + color: $default-color; + background-color: transparent; + } + } + } + } + + &.usetwentyfour { + td.hour { + height: 27px; + line-height: 27px; + } + } +} + +.input-group.date { + & .input-group-addon { + cursor: pointer; + } +} + +.table-condensed>tbody>tr>td, +.table-condensed>tbody>tr>th, +.table-condensed>tfoot>tr>td, +.table-condensed>tfoot>tr>th, +.table-condensed>thead>tr>td, +.table-condensed>thead>tr>th{ + padding: 1px; +} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss new file mode 100644 index 0000000..9133fe8 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss @@ -0,0 +1,47 @@ +/*! + + ========================================================= + * Vue Light Bootstrap Dashboard - v2.1.0 (Bootstrap 4) + ========================================================= + + * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard + * Copyright 2023 Creative Tim (http://www.creative-tim.com) + * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md) + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ + +@import "lbd/variables"; +@import "lbd/mixins"; + +@import "lbd/typography"; + +// Core CSS +@import "lbd/misc"; +@import "lbd/sidebar-and-main-panel"; +@import "lbd/buttons"; +@import "lbd/inputs"; + +@import "lbd/alerts"; +@import "lbd/tables"; + +@import "lbd/checkbox-radio-switch"; +@import "lbd/navbars"; +@import "lbd/footers"; + +// Fancy Stuff +@import "lbd/plugins/animate"; +@import "lbd/dropdown"; +@import "lbd/cards"; +@import "lbd/chartist"; +@import "lbd/responsive"; +@import "lbd/bootstrap-switch"; + +// Nucleo Icons +@import "lbd/partial-nucleo-icons"; + +// Nucleo Icons +@import "lbd/partial-nucleo-icons"; diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue new file mode 100644 index 0000000..7cf757c --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue new file mode 100644 index 0000000..98b6fc6 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue @@ -0,0 +1,53 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue new file mode 100644 index 0000000..e192cd2 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue @@ -0,0 +1,137 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue new file mode 100644 index 0000000..8ef4aac --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue @@ -0,0 +1,32 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue new file mode 100644 index 0000000..6b7b155 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue @@ -0,0 +1,52 @@ + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue new file mode 100644 index 0000000..6111bfe --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue @@ -0,0 +1,97 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue new file mode 100644 index 0000000..1cc258b --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue @@ -0,0 +1,49 @@ + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue new file mode 100644 index 0000000..e5df6e3 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue @@ -0,0 +1,174 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue new file mode 100644 index 0000000..7ef77a2 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue @@ -0,0 +1,81 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js new file mode 100644 index 0000000..e871fb6 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js @@ -0,0 +1,66 @@ +import Notifications from './Notifications.vue'; + +const NotificationStore = { + state: [], // here the notifications will be added + settings: { + overlap: false, + verticalAlign: 'top', + horizontalAlign: 'right', + type: 'info', + timeout: 5000, + closeOnClick: true, + showClose: true + }, + setOptions(options) { + this.settings = Object.assign(this.settings, options); + }, + removeNotification(timestamp) { + const indexToDelete = this.state.findIndex(n => n.timestamp === timestamp); + if (indexToDelete !== -1) { + this.state.splice(indexToDelete, 1); + } + }, + addNotification(notification) { + if (typeof notification === 'string' || notification instanceof String) { + notification = { message: notification }; + } + notification.timestamp = new Date(); + notification.timestamp.setMilliseconds( + notification.timestamp.getMilliseconds() + this.state.length + ); + notification = Object.assign({}, this.settings, notification); + this.state.push(notification); + }, + notify(notification) { + if (Array.isArray(notification)) { + notification.forEach(notificationInstance => { + this.addNotification(notificationInstance); + }); + } else { + this.addNotification(notification); + } + } +}; + +const NotificationsPlugin = { + install(Vue, options) { + let app = new Vue({ + data: { + notificationStore: NotificationStore + }, + methods: { + notify(notification) { + this.notificationStore.notify(notification); + } + } + }); + Vue.prototype.$notify = app.notify; + Vue.prototype.$notifications = app.notificationStore; + Vue.component('Notifications', Notifications); + if (options) { + NotificationStore.setOptions(options); + } + } +}; + +export default NotificationsPlugin; diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue new file mode 100644 index 0000000..1dc1d28 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue @@ -0,0 +1,103 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue new file mode 100644 index 0000000..343456b --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js new file mode 100644 index 0000000..5376efc --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js @@ -0,0 +1,39 @@ +import Sidebar from './SideBar.vue' +import SidebarLink from './SidebarLink.vue' + +const SidebarStore = { + showSidebar: false, + sidebarLinks: [ + { + name: 'Dashboard', + icon: 'ti-panel', + path: '/admin/overview' + } + ], + displaySidebar (value) { + this.showSidebar = value + } +} + +const SidebarPlugin = { + + install (Vue) { + Vue.mixin({ + data () { + return { + sidebarStore: SidebarStore + } + } + }) + + Object.defineProperty(Vue.prototype, '$sidebar', { + get () { + return this.$root.sidebarStore + } + }) + Vue.component('side-bar', Sidebar) + Vue.component('sidebar-link', SidebarLink) + } +} + +export default SidebarPlugin diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue b/vue-light-bootstrap-dashboard-master/src/components/Table.vue new file mode 100644 index 0000000..000c85e --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/Table.vue @@ -0,0 +1,37 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/components/index.js b/vue-light-bootstrap-dashboard-master/src/components/index.js new file mode 100644 index 0000000..6bfdc37 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/index.js @@ -0,0 +1,26 @@ +import BaseCheckbox from './Inputs/BaseCheckbox.vue' +import Radio from './Inputs/BaseRadio.vue' +import BaseInput from './Inputs/BaseInput.vue' + +import BaseDropdown from './BaseDropdown.vue' +import Table from './Table.vue' + +import Card from './Cards/Card.vue' +import ChartCard from './Cards/ChartCard.vue' +import StatsCard from './Cards/StatsCard.vue' + +import SidebarPlugin from './SidebarPlugin' + +let components = { + BaseCheckbox, + Radio, + BaseInput, + Card, + ChartCard, + StatsCard, + Table, + BaseDropdown, + SidebarPlugin +} + +export default components diff --git a/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js new file mode 100644 index 0000000..e4c70f5 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js @@ -0,0 +1,15 @@ +export default { + bind: function (el, binding, vnode) { + el.clickOutsideEvent = function (event) { + // here I check that click was outside the el and his childrens + if (!(el == event.target || el.contains(event.target))) { + // and if it did, call method provided in attribute value + vnode.context[binding.expression](event); + } + }; + document.body.addEventListener('click', el.clickOutsideEvent) + }, + unbind: function (el) { + document.body.removeEventListener('click', el.clickOutsideEvent) + }, +} diff --git a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/globalComponents.js b/vue-light-bootstrap-dashboard-master/src/globalComponents.js new file mode 100644 index 0000000..579ec66 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/globalComponents.js @@ -0,0 +1,21 @@ +import BaseInput from './components/Inputs/BaseInput.vue' +import BaseCheckbox from './components/Inputs/BaseCheckbox.vue' +import BaseRadio from './components/Inputs/BaseRadio.vue' +import BaseDropdown from './components/BaseDropdown.vue' +import Card from './components/Cards/Card.vue' + +/** + * You can register global components here and use them as a plugin in your main Vue instance + */ + +const GlobalComponents = { + install (Vue) { + Vue.component(BaseInput.name, BaseInput) + Vue.component(BaseCheckbox.name, BaseCheckbox) + Vue.component(BaseRadio.name, BaseRadio) + Vue.component(BaseDropdown.name, BaseDropdown) + Vue.component('card', Card) + } +} + +export default GlobalComponents diff --git a/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js new file mode 100644 index 0000000..a7ee7fb --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js @@ -0,0 +1,14 @@ +import clickOutside from './directives/click-ouside.js'; + + +/** + * You can register global directives here and use them as a plugin in your main Vue instance + */ + +const GlobalDirectives = { + install (Vue) { + Vue.directive('click-outside', clickOutside); + } +} + +export default GlobalDirectives diff --git a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue new file mode 100644 index 0000000..0238796 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue @@ -0,0 +1,22 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue new file mode 100644 index 0000000..66ceb09 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue new file mode 100644 index 0000000..8fdd08f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue @@ -0,0 +1,77 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue new file mode 100644 index 0000000..ea94355 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue new file mode 100644 index 0000000..0681b00 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue @@ -0,0 +1,102 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js new file mode 100644 index 0000000..d59a9e4 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js @@ -0,0 +1,27 @@ +import VTooltip from 'v-tooltip' +// Notifications plugin +import Notifications from 'src/components/NotificationPlugin' +// A plugin file where you could register global components used across the app +import GlobalComponents from './globalComponents' +// A plugin file where you could register global directives +import GlobalDirectives from './globalDirectives' +// Sidebar on the right. Used as a local plugin in DashboardLayout.vue +import SideBar from './components/SidebarPlugin' + +// asset imports +import 'bootstrap/dist/css/bootstrap.css' +import './assets/sass/light-bootstrap-dashboard.scss' +import './assets/css/demo.css' + +/** + * This is the main Light Bootstrap Dashboard Vue plugin where dashboard related plugins are registerd. + */ +export default { + install (Vue) { + Vue.use(GlobalComponents) + Vue.use(GlobalDirectives) + Vue.use(SideBar) + Vue.use(Notifications) + Vue.use(VTooltip) + } +} diff --git a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/main.js b/vue-light-bootstrap-dashboard-master/src/main.js new file mode 100644 index 0000000..71016a7 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/main.js @@ -0,0 +1,49 @@ +/*! + + ========================================================= + * Vue Light Bootstrap Dashboard - v2.1.0 (Bootstrap 4) + ========================================================= + + * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard + * Copyright 2023 Creative Tim (http://www.creative-tim.com) + * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md) + + ========================================================= + + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + */ +import Vue from "vue"; +import VueRouter from "vue-router"; +import App from "./App.vue"; + +// LightBootstrap plugin +import LightBootstrap from "./light-bootstrap-main"; + +// router setup +import routes from "./routes/routes"; + +import "./registerServiceWorker"; +// plugin setup +Vue.use(VueRouter); +Vue.use(LightBootstrap); + +// configure router +const router = new VueRouter({ + routes, // short for routes: routes + linkActiveClass: "nav-item active", + scrollBehavior: (to) => { + if (to.hash) { + return { selector: to.hash }; + } else { + return { x: 0, y: 0 }; + } + }, +}); + +/* eslint-disable no-new */ +new Vue({ + el: "#app", + render: (h) => h(App), + router, +}); diff --git a/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue new file mode 100644 index 0000000..d9f4607 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue @@ -0,0 +1,632 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue new file mode 100644 index 0000000..25bed76 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue @@ -0,0 +1,77 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js new file mode 100644 index 0000000..ce40e36 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js @@ -0,0 +1 @@ +export const API_KEY = 'YOUR_API_KEY_HERE' diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue new file mode 100644 index 0000000..db6c1a6 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue @@ -0,0 +1,66 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue new file mode 100644 index 0000000..37e053f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue @@ -0,0 +1,131 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue new file mode 100644 index 0000000..6ee4af0 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue @@ -0,0 +1,273 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue new file mode 100644 index 0000000..ebcf86d --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue @@ -0,0 +1,115 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue new file mode 100644 index 0000000..442a57c --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue @@ -0,0 +1,98 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue new file mode 100644 index 0000000..cfc8b71 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue @@ -0,0 +1,90 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue new file mode 100644 index 0000000..a6507a9 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue new file mode 100644 index 0000000..00536b0 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue @@ -0,0 +1,134 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue new file mode 100644 index 0000000..dd8580b --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue @@ -0,0 +1,65 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js new file mode 100644 index 0000000..76cede0 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js @@ -0,0 +1,32 @@ +/* eslint-disable no-console */ + +import { register } from 'register-service-worker' + +if (process.env.NODE_ENV === 'production') { + register(`${process.env.BASE_URL}service-worker.js`, { + ready () { + console.log( + 'App is being served from cache by a service worker.\n' + + 'For more details, visit https://goo.gl/AFskqB' + ) + }, + registered () { + console.log('Service worker has been registered.') + }, + cached () { + console.log('Content has been cached for offline use.') + }, + updatefound () { + console.log('New content is downloading.') + }, + updated () { + console.log('New content is available; please refresh.') + }, + offline () { + console.log('No internet connection found. App is running in offline mode.') + }, + error (error) { + console.error('Error during service worker registration:', error) + } + }) +} diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js b/vue-light-bootstrap-dashboard-master/src/routes/routes.js new file mode 100644 index 0000000..e17c405 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/routes/routes.js @@ -0,0 +1,80 @@ +import DashboardLayout from '../layout/DashboardLayout.vue' +// GeneralViews +import NotFound from '../pages/NotFoundPage.vue' + +// Admin pages +import Overview from 'src/pages/Overview.vue' +import UserProfile from 'src/pages/UserProfile.vue' +import TableList from 'src/pages/TableList.vue' +import Typography from 'src/pages/Typography.vue' +import Icons from 'src/pages/Icons.vue' +import Maps from 'src/pages/Maps.vue' +import Notifications from 'src/pages/Notifications.vue' +import Upgrade from 'src/pages/Upgrade.vue' + +const routes = [ + { + path: '/', + component: DashboardLayout, + redirect: '/admin/overview' + }, + { + path: '/admin', + component: DashboardLayout, + redirect: '/admin/overview', + children: [ + { + path: 'overview', + name: 'Overview', + component: Overview + }, + { + path: 'user', + name: 'User', + component: UserProfile + }, + { + path: 'table-list', + name: 'Table List', + component: TableList + }, + { + path: 'typography', + name: 'Typography', + component: Typography + }, + { + path: 'icons', + name: 'Icons', + component: Icons + }, + { + path: 'maps', + name: 'Maps', + component: Maps + }, + { + path: 'notifications', + name: 'Notifications', + component: Notifications + }, + { + path: 'upgrade', + name: 'Upgrade to PRO', + component: Upgrade + } + ] + }, + { path: '*', component: NotFound } +] + +/** + * Asynchronously load view (Webpack Lazy loading compatible) + * The specified component must be inside the Views folder + * @param {string} name the filename (basename) of the view to load. +function view(name) { + var res= require('../components/Dashboard/Views/' + name + '.vue'); + return res; +};**/ + +export default routes diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/vue.config.js b/vue-light-bootstrap-dashboard-master/vue.config.js new file mode 100644 index 0000000..054a44f --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/vue.config.js @@ -0,0 +1,44 @@ +const path = require('path'); +const webpack = require('webpack'); + +function resolveSrc(_path) { + return path.join(__dirname, _path); +} + +module.exports = { + outputDir: '../../4team_final_MainSpring/demo2/src/main/resources/static', + lintOnSave: false, + configureWebpack: { + // Set up all the aliases we use in our app. + resolve: { + alias: { + src: resolveSrc('src'), + 'chart.js': 'chart.js/dist/Chart.js' + } + }, + plugins: [ + new webpack.optimize.LimitChunkCountPlugin({ + maxChunks: 6 + }) + ] + }, + pwa: { + name: 'Vue Light Bootstrap Dashboard', + themeColor: '#344675', + msTileColor: '#344675', + appleMobileWebAppCapable: 'yes', + appleMobileWebAppStatusBarStyle: '#344675' + }, + css: { + // Enable CSS source maps. + sourceMap: process.env.NODE_ENV !== 'production' + }, + devServer: { + proxy: { + '/': { + target: "http://localhost:8080", + changeOrigin: true, + } + } + } +}; diff --git a/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier new file mode 100644 index 0000000..e69de29 From d18b274e6510efa11340ead3ca16e3764c9bafa8 Mon Sep 17 00:00:00 2001 From: seulle Date: Thu, 21 Mar 2024 20:05:46 +0900 Subject: [PATCH 002/101] =?UTF-8?q?=EC=B0=BD=EA=B3=A0=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20html=20=EC=88=98=EC=A0=951?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 +++ .idea/misc.xml | 6 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ .../.babelrc:Zone.Identifier | 3 + .../.editorconfig:Zone.Identifier | 3 + .../.eslintrc:Zone.Identifier | 3 + .../workflows/main.yml:Zone.Identifier | 3 + .../.gitignore:Zone.Identifier | 3 + .../.npmrc:Zone.Identifier | 3 + .../.postcssrc.js:Zone.Identifier | 3 + .../CHANGELOG.md:Zone.Identifier | 3 + .../CODE_OF_CONDUCT.md:Zone.Identifier | 3 + .../CONTRIBUTING.md:Zone.Identifier | 3 + .../ISSUE_TEMPLATE.md:Zone.Identifier | 3 + .../LICENSE:Zone.Identifier | 3 + .../README.md:Zone.Identifier | 3 + .../css/demo.css:Zone.Identifier | 3 + .../css/documentation.css:Zone.Identifier | 3 + .../css/light-dashboard.css:Zone.Identifier | 3 + .../img/apple-icon.png:Zone.Identifier | 3 + .../img/back.jpg:Zone.Identifier | 3 + .../img/favicon.png:Zone.Identifier | 3 + .../img/tim-logo.png:Zone.Identifier | 3 + .../tutorial-components.html:Zone.Identifier | 3 + .../intelij.webpack.js:Zone.Identifier | 3 + .../package.json:Zone.Identifier | 3 + .../public/.gitkeep:Zone.Identifier | 3 + .../public/Dashboard.PNG:Zone.Identifier | 3 + .../public/favicon.png:Zone.Identifier | 3 + .../img/default-avatar.png:Zone.Identifier | 3 + .../img/faces/face-0.jpg:Zone.Identifier | 3 + .../img/faces/face-1.jpg:Zone.Identifier | 3 + .../img/faces/face-2.jpg:Zone.Identifier | 3 + .../img/faces/face-3.jpg:Zone.Identifier | 3 + .../img/faces/face-4.jpg:Zone.Identifier | 3 + .../img/faces/face-5.jpg:Zone.Identifier | 3 + .../img/faces/face-6.jpg:Zone.Identifier | 3 + .../img/faces/face-7.jpg:Zone.Identifier | 3 + .../img/faces/tim_vector.jpe:Zone.Identifier | 3 + .../public/img/favicon.ico:Zone.Identifier | 3 + .../public/img/favicon.png:Zone.Identifier | 3 + ...android-chrome-192x192.png:Zone.Identifier | 3 + ...android-chrome-512x512.png:Zone.Identifier | 3 + ...ple-touch-icon-120x120.png:Zone.Identifier | 3 + ...ple-touch-icon-152x152.png:Zone.Identifier | 3 + ...ple-touch-icon-180x180.png:Zone.Identifier | 3 + ...apple-touch-icon-60x60.png:Zone.Identifier | 3 + ...apple-touch-icon-76x76.png:Zone.Identifier | 3 + .../apple-touch-icon.png:Zone.Identifier | 3 + .../icons/favicon-16x16.png:Zone.Identifier | 3 + .../icons/favicon-32x32.png:Zone.Identifier | 3 + ...plication-icon-144x144.png:Zone.Identifier | 3 + .../icons/mstile-150x150.png:Zone.Identifier | 3 + .../safari-pinned-tab.svg:Zone.Identifier | 3 + .../img/loading-bubbles.svg:Zone.Identifier | 3 + .../public/img/mask.png:Zone.Identifier | 3 + .../public/img/new_logo.png:Zone.Identifier | 3 + .../public/img/sidebar-1.jpg:Zone.Identifier | 3 + .../public/img/sidebar-2.jpg:Zone.Identifier | 3 + .../public/img/sidebar-3.jpg:Zone.Identifier | 3 + .../public/img/sidebar-4.jpg:Zone.Identifier | 3 + .../public/img/sidebar-5.jpg:Zone.Identifier | 3 + .../public/img/tim_80x80.png:Zone.Identifier | 3 + .../public/img/vue-logo.png:Zone.Identifier | 3 + .../public/index.html:Zone.Identifier | 3 + .../public/manifest.json:Zone.Identifier | 3 + .../public/robots.txt:Zone.Identifier | 3 + .../src/App.vue | 5 +- .../src/App.vue:Zone.Identifier | 3 + .../src/assets/css/demo.css:Zone.Identifier | 3 + .../fonts/nucleo-icons.eot:Zone.Identifier | 3 + .../fonts/nucleo-icons.svg:Zone.Identifier | 3 + .../fonts/nucleo-icons.ttf:Zone.Identifier | 3 + .../fonts/nucleo-icons.woff2:Zone.Identifier | 3 + .../fonts/nucleo-icons.woff:Zone.Identifier | 3 + .../sass/lbd/_alerts.scss:Zone.Identifier | 3 + .../_bootstrap-switch.scss:Zone.Identifier | 3 + .../sass/lbd/_buttons.scss:Zone.Identifier | 3 + .../sass/lbd/_cards.scss:Zone.Identifier | 3 + .../sass/lbd/_chartist.scss:Zone.Identifier | 3 + ...checkbox-radio-switch.scss:Zone.Identifier | 3 + .../sass/lbd/_dropdown.scss:Zone.Identifier | 3 + .../sass/lbd/_footers.scss:Zone.Identifier | 3 + .../sass/lbd/_inputs.scss:Zone.Identifier | 3 + .../sass/lbd/_misc.scss:Zone.Identifier | 3 + .../sass/lbd/_mixins.scss:Zone.Identifier | 3 + .../sass/lbd/_navbars.scss:Zone.Identifier | 3 + ..._partial-nucleo-icons.scss:Zone.Identifier | 3 + .../sass/lbd/_responsive.scss:Zone.Identifier | 3 + ...idebar-and-main-panel.scss:Zone.Identifier | 3 + .../sass/lbd/_tables.scss:Zone.Identifier | 3 + .../sass/lbd/_typography.scss:Zone.Identifier | 3 + .../sass/lbd/_variables.scss:Zone.Identifier | 3 + .../lbd/mixins/_buttons.scss:Zone.Identifier | 3 + .../lbd/mixins/_cards.scss:Zone.Identifier | 3 + .../lbd/mixins/_chartist.scss:Zone.Identifier | 3 + .../lbd/mixins/_icons.scss:Zone.Identifier | 3 + .../lbd/mixins/_inputs.scss:Zone.Identifier | 3 + .../lbd/mixins/_labels.scss:Zone.Identifier | 3 + .../_morphing-buttons.scss:Zone.Identifier | 3 + .../lbd/mixins/_navbars.scss:Zone.Identifier | 3 + .../_social-buttons.scss:Zone.Identifier | 3 + .../lbd/mixins/_tabs.scss:Zone.Identifier | 3 + .../mixins/_transparency.scss:Zone.Identifier | 3 + .../_vendor-prefixes.scss:Zone.Identifier | 3 + .../lbd/plugins/_animate.scss:Zone.Identifier | 3 + .../_datetime-picker.scss:Zone.Identifier | 3 + ...t-bootstrap-dashboard.scss:Zone.Identifier | 3 + .../BaseDropdown.vue:Zone.Identifier | 3 + .../components/Cards/Card.vue:Zone.Identifier | 3 + .../Cards/ChartCard.vue:Zone.Identifier | 3 + .../Cards/StatsCard.vue:Zone.Identifier | 3 + .../Inputs/BaseCheckbox.vue:Zone.Identifier | 3 + .../Inputs/BaseInput.vue:Zone.Identifier | 3 + .../Inputs/BaseRadio.vue:Zone.Identifier | 3 + .../Notification.vue:Zone.Identifier | 3 + .../Notifications.vue:Zone.Identifier | 3 + .../index.js:Zone.Identifier | 3 + .../SidebarPlugin/SideBar.vue:Zone.Identifier | 3 + .../SidebarLink.vue:Zone.Identifier | 3 + .../SidebarPlugin/index.js:Zone.Identifier | 3 + .../src/components/Table.vue:Zone.Identifier | 3 + .../src/components/WarehouseList.vue | 63 +++++++++++++++++++ .../src/components/index.js | 2 +- .../src/components/index.js:Zone.Identifier | 3 + .../click-ouside.js:Zone.Identifier | 3 + .../src/globalComponents.js:Zone.Identifier | 3 + .../src/globalDirectives.js:Zone.Identifier | 3 + .../src/layout/Content.vue:Zone.Identifier | 3 + .../layout/ContentFooter.vue:Zone.Identifier | 3 + .../src/layout/DashboardLayout.vue | 4 ++ .../DashboardLayout.vue:Zone.Identifier | 3 + .../src/layout/MobileMenu.vue:Zone.Identifier | 3 + .../src/layout/TopNavbar.vue:Zone.Identifier | 3 + .../light-bootstrap-main.js:Zone.Identifier | 3 + .../src/main.js:Zone.Identifier | 3 + .../src/pages/Icons.vue:Zone.Identifier | 3 + .../src/pages/Maps.vue:Zone.Identifier | 3 + .../src/pages/Maps/API_KEY.js:Zone.Identifier | 3 + .../pages/NotFoundPage.vue:Zone.Identifier | 3 + .../pages/Notifications.vue:Zone.Identifier | 3 + .../src/pages/Overview.vue | 2 +- .../src/pages/Overview.vue:Zone.Identifier | 3 + .../src/pages/TableList.vue:Zone.Identifier | 3 + .../src/pages/Typography.vue | 38 +++-------- .../src/pages/Typography.vue:Zone.Identifier | 3 + .../src/pages/Upgrade.vue:Zone.Identifier | 3 + .../src/pages/UserProfile.vue:Zone.Identifier | 3 + .../EditProfileForm.vue:Zone.Identifier | 3 + .../UserProfile/UserCard.vue:Zone.Identifier | 3 + .../registerServiceWorker.js:Zone.Identifier | 3 + .../src/routes/routes.js | 7 +++ .../src/routes/routes.js:Zone.Identifier | 3 + .../vue.config.js:Zone.Identifier | 3 + 155 files changed, 550 insertions(+), 31 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..1c2fda5 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..de412e9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..02beb9a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..c8397c9 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.babelrc:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.editorconfig:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.eslintrc:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.gitignore:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.npmrc:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/.postcssrc.js:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/CHANGELOG.md:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier b/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/LICENSE:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier b/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/README.md:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/intelij.webpack.js:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier b/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/package.json:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue b/vue-light-bootstrap-dashboard-master/src/App.vue index ff97524..9ce8429 100644 --- a/vue-light-bootstrap-dashboard-master/src/App.vue +++ b/vue-light-bootstrap-dashboard-master/src/App.vue @@ -1,12 +1,15 @@ + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js b/vue-light-bootstrap-dashboard-master/src/routes/routes.js index e17c405..9ff8405 100644 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js +++ b/vue-light-bootstrap-dashboard-master/src/routes/routes.js @@ -11,6 +11,8 @@ import Icons from 'src/pages/Icons.vue' import Maps from 'src/pages/Maps.vue' import Notifications from 'src/pages/Notifications.vue' import Upgrade from 'src/pages/Upgrade.vue' +import WarehouseList from 'src/components/WarehouseList.vue' + const routes = [ { @@ -28,6 +30,11 @@ const routes = [ name: 'Overview', component: Overview }, + { + path: 'warehouses', + name: 'Warehouses', + component: WarehouseList // 추가된 컴포넌트 라우트 창고페이지 + }, { path: 'user', name: 'User', diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier index e69de29..ff497d6 100644 --- a/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier +++ b/vue-light-bootstrap-dashboard-master/vue.config.js:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip From 4d15dca5d8449cd0896c78665b0ce501bd86c3b9 Mon Sep 17 00:00:00 2001 From: seulle Date: Thu, 21 Mar 2024 20:07:01 +0900 Subject: [PATCH 003/101] =?UTF-8?q?=EC=B0=BD=EA=B3=A0=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20html=20=EC=88=98=EC=A0=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/4team_final_MainVue.iml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .idea/4team_final_MainVue.iml diff --git a/.idea/4team_final_MainVue.iml b/.idea/4team_final_MainVue.iml new file mode 100644 index 0000000..18ec59d --- /dev/null +++ b/.idea/4team_final_MainVue.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file From 7ebcc292824b3a648fd797da39d1c516659a6a72 Mon Sep 17 00:00:00 2001 From: seulle Date: Fri, 22 Mar 2024 10:05:31 +0900 Subject: [PATCH 004/101] =?UTF-8?q?F-=EC=B0=BD=EA=B3=A0=20=EA=B4=80?= =?UTF-8?q?=EB=A6=ACvue=200.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/WarehouseList.vue | 40 ++++++++++++++++--- .../src/layout/DashboardLayout.vue | 2 +- .../src/pages/Icons.vue | 6 +-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue b/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue index 19b9ec7..477eb47 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue @@ -3,16 +3,18 @@
- + + + :data="warehouses.filteredData">
@@ -31,11 +33,13 @@ export default { LTable, Card }, - data () { + data() { return { + searchQuery: '', warehouses: { columns: ['창고 코드', '창고 이름', '창고 주소'], - data: [] + data: [], + filteredData: [] } } }, @@ -53,11 +57,35 @@ export default { '창고 주소': warehouse.contactAddress }; }); + // 처음에는 모든 데이터를 필터링된 데이터로 설정 + this.warehouses.filteredData = this.warehouses.data; }) .catch(error => { console.error("창고 목록을 가져오는 데 실패했습니다.", error); }); + }, + filterWarehouses() { + if(this.searchQuery) { + this.warehouses.filteredData = this.warehouses.data.filter(warehouse => + warehouse['창고 코드'].toLowerCase().includes(this.searchQuery.toLowerCase()) || + warehouse['창고 이름'].toLowerCase().includes(this.searchQuery.toLowerCase()) || + warehouse['창고 주소'].toLowerCase().includes(this.searchQuery.toLowerCase()) + ); + } else { + this.warehouses.filteredData = this.warehouses.data; + } } } } + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue index eb37601..54fd539 100644 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue +++ b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue @@ -31,7 +31,7 @@

Notifications

- +

창고 관리

diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue index d9f4607..f7befd5 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue @@ -113,9 +113,9 @@
-
- -

nc-bell-55

+
+ +

nc-bell-55

From cd32b7dfd49b0d5929eaf8a6abed9701f6d46097 Mon Sep 17 00:00:00 2001 From: seulle Date: Fri, 22 Mar 2024 10:40:03 +0900 Subject: [PATCH 005/101] =?UTF-8?q?=EC=B0=BD=EA=B3=A0=EB=B3=84=20=EC=9E=AC?= =?UTF-8?q?=EA=B3=A0=EB=AA=A9=EB=A1=9D=20=EA=B0=9C=EB=B0=9C=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2dd5544..4e24551 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # 4team front Repo front 메인 레포 +1 ### 다들 규칙 확인하시고 시작하세요!! From c8cfd273771c357b304baeee073502a7f9d6dc90 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Fri, 22 Mar 2024 16:33:53 +0900 Subject: [PATCH 006/101] =?UTF-8?q?F=5FLOGIN=5F0.1.0-LoginPage-=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=EA=B8=B0=EB=8A=A5=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/index.html | 15 ++++++++++ templates/login.html | 69 +++++++++++++++++++++++++++++++++++++++++++ templates/role.html | 55 ++++++++++++++++++++++++++++++++++ templates/signUP.html | 51 ++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 templates/index.html create mode 100644 templates/login.html create mode 100644 templates/role.html create mode 100644 templates/signUP.html diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..e94673b --- /dev/null +++ b/templates/index.html @@ -0,0 +1,15 @@ + + + + + Title + + +

로그인 성공

+ + + + + + + \ No newline at end of file diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..39631c9 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,69 @@ + + + + + Title + + + + + +
+
Login
+
+
MemberName
+ + + + +
Password
+ + + +
+
+ + \ No newline at end of file diff --git a/templates/role.html b/templates/role.html new file mode 100644 index 0000000..33d7e99 --- /dev/null +++ b/templates/role.html @@ -0,0 +1,55 @@ + + + + + Title + + + +
+ ADMIN 님 안녕하세요. +
+ + +
+ VIP_MEMBER 님 안녕하세요. +
+ + +
+ 소유한 권한들 : +
+ + +

인증된 사람만 이 글을 볼 수 있습니다.

+ +
+ name : +
+ + +
+ principal.username : +
+ +
+ principal.password : +
+ +
+ principal.enabled : +
+ +
+ principal.accountNonLocked : +
+ +
+ principal.accountNonExpired : +
+ +
+ principal.credentialsNonExpired : +
+ + \ No newline at end of file diff --git a/templates/signUP.html b/templates/signUP.html new file mode 100644 index 0000000..15d1cda --- /dev/null +++ b/templates/signUP.html @@ -0,0 +1,51 @@ + + + + + Title + + + + + + +
+
SignUp
+ +
+
MemberName
+ +
password
+ + + 멤버 + 프라이빗 멤버 + VIP + 관리자 + + +
+
+ + \ No newline at end of file From d0f329b4539766ac127810c5dc45210cfc85c816 Mon Sep 17 00:00:00 2001 From: seulle Date: Fri, 22 Mar 2024 18:45:19 +0900 Subject: [PATCH 007/101] =?UTF-8?q?0.1.0=20=EC=B0=BD=EA=B3=A0=EB=B3=84=20?= =?UTF-8?q?=EC=9E=AC=EA=B3=A0=EC=B6=9C=EB=A0=A5X?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/InventoryAll.vue | 113 ++++++++++++++++++ .../src/components/InventoryList.vue | 94 +++++++++++++++ .../src/components/WarehouseList.vue | 107 +++++++++-------- .../src/layout/DashboardLayout.vue | 8 +- .../src/routes/routes.js | 12 ++ 5 files changed, 283 insertions(+), 51 deletions(-) create mode 100644 vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue create mode 100644 vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue diff --git a/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue new file mode 100644 index 0000000..518bfac --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue b/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue new file mode 100644 index 0000000..61df197 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue b/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue index 477eb47..c9eaf67 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/WarehouseList.vue @@ -2,21 +2,44 @@
-
-
@@ -24,68 +47,58 @@ + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue index 54fd539..26645d4 100644 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue +++ b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue @@ -18,10 +18,6 @@

Typography

- - -

Icons

-

Maps

@@ -34,6 +30,10 @@

창고 관리

+ + +

재고

+
- \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue new file mode 100644 index 0000000..cc24c5a --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/pages/ordertemp.txt b/vue-light-bootstrap-dashboard-master/src/pages/ordertemp.txt new file mode 100644 index 0000000..e757a4c --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/pages/ordertemp.txt @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js b/vue-light-bootstrap-dashboard-master/src/routes/routes.js index 4b2878c..6a8e2a2 100644 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js +++ b/vue-light-bootstrap-dashboard-master/src/routes/routes.js @@ -13,6 +13,7 @@ import Notifications from 'src/pages/Notifications.vue' import Upgrade from 'src/pages/Upgrade.vue' import BusinessTable from 'src/pages/TableList1.vue' import OrderList from 'src/pages/TableList2.vue' +import OrderDetailList from 'src/pages/TableList3.vue' const routes = [ { @@ -64,12 +65,13 @@ const routes = [ path: 'upgrade', name: 'Upgrade to PRO', component: Upgrade - }, - { - path: '/orders/customer/:customerCode', // 라우트 경로에 매개변수를 추가합니다. - name: 'OrderList', - component: OrderList } + // , + // { + // path: '/customer/:customerCode', // 라우트 경로에 매개변수를 추가합니다. + // name: 'OrderList', + // component: OrderList + // } ] }, { @@ -77,11 +79,23 @@ const routes = [ name: 'Business', component: BusinessTable }, - // { - // path: '/orders/customer/:customerCode', // 라우트 경로에 매개변수를 추가합니다. - // name: 'OrderList', - // component: OrderList - // }, + { + path: '/orders', // 라우트 경로에 매개변수를 추가합니다. + component: OrderList, + children: [ + { + path: 'customer/:customerCode', + name: 'OrderList', + component: OrderList + }, + { + path: 'detail/:orderNumber', + name: 'OrderDetailList', + component: OrderDetailList, + props: true + } + ] + }, { path: '*', component: NotFound } ] From b465247e07b402f9687e2376240e0e12655aa01a Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Mon, 25 Mar 2024 15:24:16 +0900 Subject: [PATCH 011/101] =?UTF-8?q?=20thymeleaf=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=EB=A1=9C=20=ED=98=84=EC=9E=AC=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=EC=97=90=20=EC=9E=88=EB=8A=94=20templates=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=ED=95=98=EA=B3=A0=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=EB=A1=9C=20=EC=98=AE=EA=B9=81=EB=8B=88?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/index.html | 15 ---------- templates/login.html | 69 ------------------------------------------- templates/role.html | 55 ---------------------------------- templates/signUP.html | 51 -------------------------------- 4 files changed, 190 deletions(-) delete mode 100644 templates/index.html delete mode 100644 templates/login.html delete mode 100644 templates/role.html delete mode 100644 templates/signUP.html diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index e94673b..0000000 --- a/templates/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Title - - -

로그인 성공

- - - - - - - \ No newline at end of file diff --git a/templates/login.html b/templates/login.html deleted file mode 100644 index 39631c9..0000000 --- a/templates/login.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - Title - - - - - -
-
Login
-
-
MemberName
- - - - -
Password
- - - -
-
- - \ No newline at end of file diff --git a/templates/role.html b/templates/role.html deleted file mode 100644 index 33d7e99..0000000 --- a/templates/role.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Title - - - -
- ADMIN 님 안녕하세요. -
- - -
- VIP_MEMBER 님 안녕하세요. -
- - -
- 소유한 권한들 : -
- - -

인증된 사람만 이 글을 볼 수 있습니다.

- -
- name : -
- - -
- principal.username : -
- -
- principal.password : -
- -
- principal.enabled : -
- -
- principal.accountNonLocked : -
- -
- principal.accountNonExpired : -
- -
- principal.credentialsNonExpired : -
- - \ No newline at end of file diff --git a/templates/signUP.html b/templates/signUP.html deleted file mode 100644 index 15d1cda..0000000 --- a/templates/signUP.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - Title - - - - - - -
-
SignUp
- -
-
MemberName
- -
password
- - - 멤버 - 프라이빗 멤버 - VIP - 관리자 - - -
-
- - \ No newline at end of file From d4e8f791230843ef6c9f45544d7dff39cc4df0c1 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Mon, 25 Mar 2024 17:19:25 +0900 Subject: [PATCH 012/101] Add login template --- Cypress-Program | 1 + node_modules/.package-lock.json | 97 + node_modules/asynckit/LICENSE | 21 + node_modules/asynckit/README.md | 233 + node_modules/asynckit/bench.js | 76 + node_modules/asynckit/index.js | 6 + node_modules/asynckit/lib/abort.js | 29 + node_modules/asynckit/lib/async.js | 34 + node_modules/asynckit/lib/defer.js | 26 + node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + node_modules/asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + node_modules/asynckit/lib/state.js | 37 + node_modules/asynckit/lib/streamify.js | 141 + node_modules/asynckit/lib/terminator.js | 29 + node_modules/asynckit/package.json | 63 + node_modules/asynckit/parallel.js | 43 + node_modules/asynckit/serial.js | 17 + node_modules/asynckit/serialOrdered.js | 75 + node_modules/asynckit/stream.js | 21 + node_modules/axios/CHANGELOG.md | 874 ++ node_modules/axios/LICENSE | 7 + node_modules/axios/MIGRATION_GUIDE.md | 3 + node_modules/axios/README.md | 1650 ++++ node_modules/axios/SECURITY.md | 6 + node_modules/axios/dist/axios.js | 3448 +++++++ node_modules/axios/dist/axios.js.map | 1 + node_modules/axios/dist/axios.min.js | 2 + node_modules/axios/dist/axios.min.js.map | 1 + node_modules/axios/dist/browser/axios.cjs | 3258 +++++++ node_modules/axios/dist/browser/axios.cjs.map | 1 + node_modules/axios/dist/esm/axios.js | 3281 +++++++ node_modules/axios/dist/esm/axios.js.map | 1 + node_modules/axios/dist/esm/axios.min.js | 2 + node_modules/axios/dist/esm/axios.min.js.map | 1 + node_modules/axios/dist/node/axios.cjs | 4354 +++++++++ node_modules/axios/dist/node/axios.cjs.map | 1 + node_modules/axios/index.d.cts | 542 ++ node_modules/axios/index.d.ts | 559 ++ node_modules/axios/index.js | 43 + node_modules/axios/lib/adapters/README.md | 37 + node_modules/axios/lib/adapters/adapters.js | 77 + node_modules/axios/lib/adapters/http.js | 685 ++ node_modules/axios/lib/adapters/xhr.js | 260 + node_modules/axios/lib/axios.js | 89 + node_modules/axios/lib/cancel/CancelToken.js | 121 + .../axios/lib/cancel/CanceledError.js | 25 + node_modules/axios/lib/cancel/isCancel.js | 5 + node_modules/axios/lib/core/Axios.js | 225 + node_modules/axios/lib/core/AxiosError.js | 100 + node_modules/axios/lib/core/AxiosHeaders.js | 298 + .../axios/lib/core/InterceptorManager.js | 71 + node_modules/axios/lib/core/README.md | 8 + node_modules/axios/lib/core/buildFullPath.js | 21 + .../axios/lib/core/dispatchRequest.js | 81 + node_modules/axios/lib/core/mergeConfig.js | 106 + node_modules/axios/lib/core/settle.js | 27 + node_modules/axios/lib/core/transformData.js | 28 + node_modules/axios/lib/defaults/index.js | 156 + .../axios/lib/defaults/transitional.js | 7 + node_modules/axios/lib/env/README.md | 3 + .../axios/lib/env/classes/FormData.js | 2 + node_modules/axios/lib/env/data.js | 1 + .../axios/lib/helpers/AxiosTransformStream.js | 191 + .../axios/lib/helpers/AxiosURLSearchParams.js | 58 + .../axios/lib/helpers/HttpStatusCode.js | 71 + node_modules/axios/lib/helpers/README.md | 7 + .../lib/helpers/ZlibHeaderTransformStream.js | 28 + node_modules/axios/lib/helpers/bind.js | 7 + node_modules/axios/lib/helpers/buildURL.js | 63 + node_modules/axios/lib/helpers/callbackify.js | 16 + node_modules/axios/lib/helpers/combineURLs.js | 15 + node_modules/axios/lib/helpers/cookies.js | 42 + .../axios/lib/helpers/deprecatedMethod.js | 26 + .../axios/lib/helpers/formDataToJSON.js | 95 + .../axios/lib/helpers/formDataToStream.js | 111 + node_modules/axios/lib/helpers/fromDataURI.js | 53 + .../axios/lib/helpers/isAbsoluteURL.js | 15 + .../axios/lib/helpers/isAxiosError.js | 14 + .../axios/lib/helpers/isURLSameOrigin.js | 67 + node_modules/axios/lib/helpers/null.js | 2 + .../axios/lib/helpers/parseHeaders.js | 55 + .../axios/lib/helpers/parseProtocol.js | 6 + node_modules/axios/lib/helpers/readBlob.js | 15 + node_modules/axios/lib/helpers/speedometer.js | 55 + node_modules/axios/lib/helpers/spread.js | 28 + node_modules/axios/lib/helpers/throttle.js | 33 + node_modules/axios/lib/helpers/toFormData.js | 219 + .../axios/lib/helpers/toURLEncodedForm.js | 18 + node_modules/axios/lib/helpers/validator.js | 91 + .../lib/platform/browser/classes/Blob.js | 3 + .../lib/platform/browser/classes/FormData.js | 3 + .../browser/classes/URLSearchParams.js | 4 + .../axios/lib/platform/browser/index.js | 13 + .../axios/lib/platform/common/utils.js | 47 + node_modules/axios/lib/platform/index.js | 7 + .../lib/platform/node/classes/FormData.js | 3 + .../platform/node/classes/URLSearchParams.js | 4 + node_modules/axios/lib/platform/node/index.js | 12 + node_modules/axios/lib/utils.js | 723 ++ node_modules/axios/package.json | 218 + node_modules/combined-stream/License | 19 + node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 208 + node_modules/combined-stream/package.json | 25 + node_modules/combined-stream/yarn.lock | 17 + node_modules/delayed-stream/.npmignore | 1 + node_modules/delayed-stream/License | 19 + node_modules/delayed-stream/Makefile | 7 + node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + node_modules/delayed-stream/package.json | 27 + node_modules/follow-redirects/LICENSE | 18 + node_modules/follow-redirects/README.md | 155 + node_modules/follow-redirects/debug.js | 15 + node_modules/follow-redirects/http.js | 1 + node_modules/follow-redirects/https.js | 1 + node_modules/follow-redirects/index.js | 672 ++ node_modules/follow-redirects/package.json | 58 + node_modules/form-data/License | 19 + node_modules/form-data/README.md.bak | 358 + node_modules/form-data/Readme.md | 358 + node_modules/form-data/index.d.ts | 62 + node_modules/form-data/lib/browser.js | 2 + node_modules/form-data/lib/form_data.js | 501 + node_modules/form-data/lib/populate.js | 10 + node_modules/form-data/package.json | 68 + node_modules/mime-db/HISTORY.md | 507 + node_modules/mime-db/LICENSE | 23 + node_modules/mime-db/README.md | 100 + node_modules/mime-db/db.json | 8519 +++++++++++++++++ node_modules/mime-db/index.js | 12 + node_modules/mime-db/package.json | 60 + node_modules/mime-types/HISTORY.md | 397 + node_modules/mime-types/LICENSE | 23 + node_modules/mime-types/README.md | 113 + node_modules/mime-types/index.js | 188 + node_modules/mime-types/package.json | 44 + node_modules/proxy-from-env/.eslintrc | 29 + node_modules/proxy-from-env/.travis.yml | 10 + node_modules/proxy-from-env/LICENSE | 20 + node_modules/proxy-from-env/README.md | 131 + node_modules/proxy-from-env/index.js | 108 + node_modules/proxy-from-env/package.json | 34 + node_modules/proxy-from-env/test.js | 483 + package-lock.json | 102 + package.json | 5 + 149 files changed, 38015 insertions(+) create mode 160000 Cypress-Program create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/asynckit/LICENSE create mode 100644 node_modules/asynckit/README.md create mode 100644 node_modules/asynckit/bench.js create mode 100644 node_modules/asynckit/index.js create mode 100644 node_modules/asynckit/lib/abort.js create mode 100644 node_modules/asynckit/lib/async.js create mode 100644 node_modules/asynckit/lib/defer.js create mode 100644 node_modules/asynckit/lib/iterate.js create mode 100644 node_modules/asynckit/lib/readable_asynckit.js create mode 100644 node_modules/asynckit/lib/readable_parallel.js create mode 100644 node_modules/asynckit/lib/readable_serial.js create mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 node_modules/asynckit/lib/state.js create mode 100644 node_modules/asynckit/lib/streamify.js create mode 100644 node_modules/asynckit/lib/terminator.js create mode 100644 node_modules/asynckit/package.json create mode 100644 node_modules/asynckit/parallel.js create mode 100644 node_modules/asynckit/serial.js create mode 100644 node_modules/asynckit/serialOrdered.js create mode 100644 node_modules/asynckit/stream.js create mode 100644 node_modules/axios/CHANGELOG.md create mode 100644 node_modules/axios/LICENSE create mode 100644 node_modules/axios/MIGRATION_GUIDE.md create mode 100644 node_modules/axios/README.md create mode 100644 node_modules/axios/SECURITY.md create mode 100644 node_modules/axios/dist/axios.js create mode 100644 node_modules/axios/dist/axios.js.map create mode 100644 node_modules/axios/dist/axios.min.js create mode 100644 node_modules/axios/dist/axios.min.js.map create mode 100644 node_modules/axios/dist/browser/axios.cjs create mode 100644 node_modules/axios/dist/browser/axios.cjs.map create mode 100644 node_modules/axios/dist/esm/axios.js create mode 100644 node_modules/axios/dist/esm/axios.js.map create mode 100644 node_modules/axios/dist/esm/axios.min.js create mode 100644 node_modules/axios/dist/esm/axios.min.js.map create mode 100644 node_modules/axios/dist/node/axios.cjs create mode 100644 node_modules/axios/dist/node/axios.cjs.map create mode 100644 node_modules/axios/index.d.cts create mode 100644 node_modules/axios/index.d.ts create mode 100644 node_modules/axios/index.js create mode 100644 node_modules/axios/lib/adapters/README.md create mode 100644 node_modules/axios/lib/adapters/adapters.js create mode 100755 node_modules/axios/lib/adapters/http.js create mode 100644 node_modules/axios/lib/adapters/xhr.js create mode 100644 node_modules/axios/lib/axios.js create mode 100644 node_modules/axios/lib/cancel/CancelToken.js create mode 100644 node_modules/axios/lib/cancel/CanceledError.js create mode 100644 node_modules/axios/lib/cancel/isCancel.js create mode 100644 node_modules/axios/lib/core/Axios.js create mode 100644 node_modules/axios/lib/core/AxiosError.js create mode 100644 node_modules/axios/lib/core/AxiosHeaders.js create mode 100644 node_modules/axios/lib/core/InterceptorManager.js create mode 100644 node_modules/axios/lib/core/README.md create mode 100644 node_modules/axios/lib/core/buildFullPath.js create mode 100644 node_modules/axios/lib/core/dispatchRequest.js create mode 100644 node_modules/axios/lib/core/mergeConfig.js create mode 100644 node_modules/axios/lib/core/settle.js create mode 100644 node_modules/axios/lib/core/transformData.js create mode 100644 node_modules/axios/lib/defaults/index.js create mode 100644 node_modules/axios/lib/defaults/transitional.js create mode 100644 node_modules/axios/lib/env/README.md create mode 100644 node_modules/axios/lib/env/classes/FormData.js create mode 100644 node_modules/axios/lib/env/data.js create mode 100644 node_modules/axios/lib/helpers/AxiosTransformStream.js create mode 100644 node_modules/axios/lib/helpers/AxiosURLSearchParams.js create mode 100644 node_modules/axios/lib/helpers/HttpStatusCode.js create mode 100644 node_modules/axios/lib/helpers/README.md create mode 100644 node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js create mode 100644 node_modules/axios/lib/helpers/bind.js create mode 100644 node_modules/axios/lib/helpers/buildURL.js create mode 100644 node_modules/axios/lib/helpers/callbackify.js create mode 100644 node_modules/axios/lib/helpers/combineURLs.js create mode 100644 node_modules/axios/lib/helpers/cookies.js create mode 100644 node_modules/axios/lib/helpers/deprecatedMethod.js create mode 100644 node_modules/axios/lib/helpers/formDataToJSON.js create mode 100644 node_modules/axios/lib/helpers/formDataToStream.js create mode 100644 node_modules/axios/lib/helpers/fromDataURI.js create mode 100644 node_modules/axios/lib/helpers/isAbsoluteURL.js create mode 100644 node_modules/axios/lib/helpers/isAxiosError.js create mode 100644 node_modules/axios/lib/helpers/isURLSameOrigin.js create mode 100644 node_modules/axios/lib/helpers/null.js create mode 100644 node_modules/axios/lib/helpers/parseHeaders.js create mode 100644 node_modules/axios/lib/helpers/parseProtocol.js create mode 100644 node_modules/axios/lib/helpers/readBlob.js create mode 100644 node_modules/axios/lib/helpers/speedometer.js create mode 100644 node_modules/axios/lib/helpers/spread.js create mode 100644 node_modules/axios/lib/helpers/throttle.js create mode 100644 node_modules/axios/lib/helpers/toFormData.js create mode 100644 node_modules/axios/lib/helpers/toURLEncodedForm.js create mode 100644 node_modules/axios/lib/helpers/validator.js create mode 100644 node_modules/axios/lib/platform/browser/classes/Blob.js create mode 100644 node_modules/axios/lib/platform/browser/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/browser/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/browser/index.js create mode 100644 node_modules/axios/lib/platform/common/utils.js create mode 100644 node_modules/axios/lib/platform/index.js create mode 100644 node_modules/axios/lib/platform/node/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/node/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/node/index.js create mode 100644 node_modules/axios/lib/utils.js create mode 100644 node_modules/axios/package.json create mode 100644 node_modules/combined-stream/License create mode 100644 node_modules/combined-stream/Readme.md create mode 100644 node_modules/combined-stream/lib/combined_stream.js create mode 100644 node_modules/combined-stream/package.json create mode 100644 node_modules/combined-stream/yarn.lock create mode 100644 node_modules/delayed-stream/.npmignore create mode 100644 node_modules/delayed-stream/License create mode 100644 node_modules/delayed-stream/Makefile create mode 100644 node_modules/delayed-stream/Readme.md create mode 100644 node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 node_modules/delayed-stream/package.json create mode 100644 node_modules/follow-redirects/LICENSE create mode 100644 node_modules/follow-redirects/README.md create mode 100644 node_modules/follow-redirects/debug.js create mode 100644 node_modules/follow-redirects/http.js create mode 100644 node_modules/follow-redirects/https.js create mode 100644 node_modules/follow-redirects/index.js create mode 100644 node_modules/follow-redirects/package.json create mode 100644 node_modules/form-data/License create mode 100644 node_modules/form-data/README.md.bak create mode 100644 node_modules/form-data/Readme.md create mode 100644 node_modules/form-data/index.d.ts create mode 100644 node_modules/form-data/lib/browser.js create mode 100644 node_modules/form-data/lib/form_data.js create mode 100644 node_modules/form-data/lib/populate.js create mode 100644 node_modules/form-data/package.json create mode 100644 node_modules/mime-db/HISTORY.md create mode 100644 node_modules/mime-db/LICENSE create mode 100644 node_modules/mime-db/README.md create mode 100644 node_modules/mime-db/db.json create mode 100644 node_modules/mime-db/index.js create mode 100644 node_modules/mime-db/package.json create mode 100644 node_modules/mime-types/HISTORY.md create mode 100644 node_modules/mime-types/LICENSE create mode 100644 node_modules/mime-types/README.md create mode 100644 node_modules/mime-types/index.js create mode 100644 node_modules/mime-types/package.json create mode 100644 node_modules/proxy-from-env/.eslintrc create mode 100644 node_modules/proxy-from-env/.travis.yml create mode 100644 node_modules/proxy-from-env/LICENSE create mode 100644 node_modules/proxy-from-env/README.md create mode 100644 node_modules/proxy-from-env/index.js create mode 100644 node_modules/proxy-from-env/package.json create mode 100644 node_modules/proxy-from-env/test.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/Cypress-Program b/Cypress-Program new file mode 160000 index 0000000..43e2f5c --- /dev/null +++ b/Cypress-Program @@ -0,0 +1 @@ +Subproject commit 43e2f5c3ee7bc9b3ced4ff4ca8d65094403585c7 diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..408a6a0 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,97 @@ +{ + "name": "4team_final_MainVue", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } + } +} diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE new file mode 100644 index 0000000..c9eca5d --- /dev/null +++ b/node_modules/asynckit/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +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/node_modules/asynckit/README.md b/node_modules/asynckit/README.md new file mode 100644 index 0000000..ddcc7e6 --- /dev/null +++ b/node_modules/asynckit/README.md @@ -0,0 +1,233 @@ +# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) + +Minimal async jobs utility library, with streams support. + +[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) + +[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) +[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) +[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) + + + +AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. +Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. + +It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. + +| compression | size | +| :----------------- | -------: | +| asynckit.js | 12.34 kB | +| asynckit.min.js | 4.11 kB | +| asynckit.min.js.gz | 1.47 kB | + + +## Install + +```sh +$ npm install --save asynckit +``` + +## Examples + +### Parallel Jobs + +Runs iterator over provided array in parallel. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will terminate rest of the active jobs (if abort function is provided) +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var parallel = require('asynckit').parallel + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , target = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// async job accepts one element from the array +// and a callback function +function asyncJob(item, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var parallel = require('asynckit/parallel') + , assert = require('assert') + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] + , target = [] + , keys = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); + assert.deepEqual(keys, expectedKeys); +}); + +// supports full value, key, callback (shortcut) interface +function asyncJob(item, key, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + keys.push(key); + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). + +### Serial Jobs + +Runs iterator over provided array sequentially. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will not proceed to the rest of the items in the list +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var serial = require('asynckit/serial') + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// extended interface (item, key, callback) +// also supported for arrays +function asyncJob(item, key, cb) +{ + target.push(key); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var serial = require('asynckit').serial + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , target = [] + ; + + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// shortcut interface (item, callback) +// works for object as well as for the arrays +function asyncJob(item, cb) +{ + target.push(item); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). + +_Note: Since _object_ is an _unordered_ collection of properties, +it may produce unexpected results with sequential iterations. +Whenever order of the jobs' execution is important please use `serialOrdered` method._ + +### Ordered Serial Iterations + +TBD + +For example [compare-property](compare-property) package. + +### Streaming interface + +TBD + +## Want to Know More? + +More examples can be found in [test folder](test/). + +Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. + +## License + +AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js new file mode 100644 index 0000000..c612f1a --- /dev/null +++ b/node_modules/asynckit/bench.js @@ -0,0 +1,76 @@ +/* eslint no-console: "off" */ + +var asynckit = require('./') + , async = require('async') + , assert = require('assert') + , expected = 0 + ; + +var Benchmark = require('benchmark'); +var suite = new Benchmark.Suite; + +var source = []; +for (var z = 1; z < 100; z++) +{ + source.push(z); + expected += z; +} + +suite +// add tests + +.add('async.map', function(deferred) +{ + var total = 0; + + async.map(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +.add('asynckit.parallel', function(deferred) +{ + var total = 0; + + asynckit.parallel(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +// add listeners +.on('cycle', function(ev) +{ + console.log(String(ev.target)); +}) +.on('complete', function() +{ + console.log('Fastest is ' + this.filter('fastest').map('name')); +}) +// run async +.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js new file mode 100644 index 0000000..455f945 --- /dev/null +++ b/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +module.exports = +{ + parallel : require('./parallel.js'), + serial : require('./serial.js'), + serialOrdered : require('./serialOrdered.js') +}; diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js new file mode 100644 index 0000000..114367e --- /dev/null +++ b/node_modules/asynckit/lib/abort.js @@ -0,0 +1,29 @@ +// API +module.exports = abort; + +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); + + // reset leftover jobs + state.jobs = {}; +} + +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); + } +} diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js new file mode 100644 index 0000000..7f1288a --- /dev/null +++ b/node_modules/asynckit/lib/async.js @@ -0,0 +1,34 @@ +var defer = require('./defer.js'); + +// API +module.exports = async; + +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; + + // check if async happened + defer(function() { isAsync = true; }); + + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; +} diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js new file mode 100644 index 0000000..b67110c --- /dev/null +++ b/node_modules/asynckit/lib/defer.js @@ -0,0 +1,26 @@ +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js new file mode 100644 index 0000000..5d2839a --- /dev/null +++ b/node_modules/asynckit/lib/iterate.js @@ -0,0 +1,75 @@ +var async = require('./async.js') + , abort = require('./abort.js') + ; + +// API +module.exports = iterate; + +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; + + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; + } + + // clean up jobs + delete state.jobs[key]; + + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } + + // return salvaged results + callback(error, state.results); + }); +} + +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; + + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); + } + + return aborter; +} diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js new file mode 100644 index 0000000..78ad240 --- /dev/null +++ b/node_modules/asynckit/lib/readable_asynckit.js @@ -0,0 +1,91 @@ +var streamify = require('./streamify.js') + , defer = require('./defer.js') + ; + +// API +module.exports = ReadableAsyncKit; + +/** + * Base constructor for all streams + * used to hold properties/methods + */ +function ReadableAsyncKit() +{ + ReadableAsyncKit.super_.apply(this, arguments); + + // list of active jobs + this.jobs = {}; + + // add stream methods + this.destroy = destroy; + this._start = _start; + this._read = _read; +} + +/** + * Destroys readable stream, + * by aborting outstanding jobs + * + * @returns {void} + */ +function destroy() +{ + if (this.destroyed) + { + return; + } + + this.destroyed = true; + + if (typeof this.terminator == 'function') + { + this.terminator(); + } +} + +/** + * Starts provided jobs in async manner + * + * @private + */ +function _start() +{ + // first argument – runner function + var runner = arguments[0] + // take away first argument + , args = Array.prototype.slice.call(arguments, 1) + // second argument - input data + , input = args[0] + // last argument - result callback + , endCb = streamify.callback.call(this, args[args.length - 1]) + ; + + args[args.length - 1] = endCb; + // third argument - iterator + args[1] = streamify.iterator.call(this, args[1]); + + // allow time for proper setup + defer(function() + { + if (!this.destroyed) + { + this.terminator = runner.apply(null, args); + } + else + { + endCb(null, Array.isArray(input) ? [] : {}); + } + }.bind(this)); +} + + +/** + * Implement _read to comply with Readable streams + * Doesn't really make sense for flowing object mode + * + * @private + */ +function _read() +{ + +} diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js new file mode 100644 index 0000000..5d2929f --- /dev/null +++ b/node_modules/asynckit/lib/readable_parallel.js @@ -0,0 +1,25 @@ +var parallel = require('../parallel.js'); + +// API +module.exports = ReadableParallel; + +/** + * Streaming wrapper to `asynckit.parallel` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableParallel(list, iterator, callback) +{ + if (!(this instanceof ReadableParallel)) + { + return new ReadableParallel(list, iterator, callback); + } + + // turn on object mode + ReadableParallel.super_.call(this, {objectMode: true}); + + this._start(parallel, list, iterator, callback); +} diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js new file mode 100644 index 0000000..7822698 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial.js @@ -0,0 +1,25 @@ +var serial = require('../serial.js'); + +// API +module.exports = ReadableSerial; + +/** + * Streaming wrapper to `asynckit.serial` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerial(list, iterator, callback) +{ + if (!(this instanceof ReadableSerial)) + { + return new ReadableSerial(list, iterator, callback); + } + + // turn on object mode + ReadableSerial.super_.call(this, {objectMode: true}); + + this._start(serial, list, iterator, callback); +} diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js new file mode 100644 index 0000000..3de89c4 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial_ordered.js @@ -0,0 +1,29 @@ +var serialOrdered = require('../serialOrdered.js'); + +// API +module.exports = ReadableSerialOrdered; +// expose sort helpers +module.exports.ascending = serialOrdered.ascending; +module.exports.descending = serialOrdered.descending; + +/** + * Streaming wrapper to `asynckit.serialOrdered` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerialOrdered(list, iterator, sortMethod, callback) +{ + if (!(this instanceof ReadableSerialOrdered)) + { + return new ReadableSerialOrdered(list, iterator, sortMethod, callback); + } + + // turn on object mode + ReadableSerialOrdered.super_.call(this, {objectMode: true}); + + this._start(serialOrdered, list, iterator, sortMethod, callback); +} diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js new file mode 100644 index 0000000..cbea7ad --- /dev/null +++ b/node_modules/asynckit/lib/state.js @@ -0,0 +1,37 @@ +// API +module.exports = state; + +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length + } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); + } + + return initState; +} diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js new file mode 100644 index 0000000..f56a1c9 --- /dev/null +++ b/node_modules/asynckit/lib/streamify.js @@ -0,0 +1,141 @@ +var async = require('./async.js'); + +// API +module.exports = { + iterator: wrapIterator, + callback: wrapCallback +}; + +/** + * Wraps iterators with long signature + * + * @this ReadableAsyncKit# + * @param {function} iterator - function to wrap + * @returns {function} - wrapped function + */ +function wrapIterator(iterator) +{ + var stream = this; + + return function(item, key, cb) + { + var aborter + , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) + ; + + stream.jobs[key] = wrappedCb; + + // it's either shortcut (item, cb) + if (iterator.length == 2) + { + aborter = iterator(item, wrappedCb); + } + // or long format (item, key, cb) + else + { + aborter = iterator(item, key, wrappedCb); + } + + return aborter; + }; +} + +/** + * Wraps provided callback function + * allowing to execute snitch function before + * real callback + * + * @this ReadableAsyncKit# + * @param {function} callback - function to wrap + * @returns {function} - wrapped function + */ +function wrapCallback(callback) +{ + var stream = this; + + var wrapped = function(error, result) + { + return finisher.call(stream, error, result, callback); + }; + + return wrapped; +} + +/** + * Wraps provided iterator callback function + * makes sure snitch only called once, + * but passes secondary calls to the original callback + * + * @this ReadableAsyncKit# + * @param {function} callback - callback to wrap + * @param {number|string} key - iteration key + * @returns {function} wrapped callback + */ +function wrapIteratorCallback(callback, key) +{ + var stream = this; + + return function(error, output) + { + // don't repeat yourself + if (!(key in stream.jobs)) + { + callback(error, output); + return; + } + + // clean up jobs + delete stream.jobs[key]; + + return streamer.call(stream, error, {key: key, value: output}, callback); + }; +} + +/** + * Stream wrapper for iterator callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects iterator results + */ +function streamer(error, output, callback) +{ + if (error && !this.error) + { + this.error = error; + this.pause(); + this.emit('error', error); + // send back value only, as expected + callback(error, output && output.value); + return; + } + + // stream stuff + this.push(output); + + // back to original track + // send back value only, as expected + callback(error, output && output.value); +} + +/** + * Stream wrapper for finishing callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects final results + */ +function finisher(error, output, callback) +{ + // signal end of the stream + // only for successfully finished streams + if (!error) + { + this.push(null); + } + + // back to original track + callback(error, output); +} diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js new file mode 100644 index 0000000..d6eb992 --- /dev/null +++ b/node_modules/asynckit/lib/terminator.js @@ -0,0 +1,29 @@ +var abort = require('./abort.js') + , async = require('./async.js') + ; + +// API +module.exports = terminator; + +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } + + // fast forward iteration index + this.index = this.size; + + // abort jobs + abort(this); + + // send back results we have so far + async(callback)(null, this.results); +} diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json new file mode 100644 index 0000000..51147d6 --- /dev/null +++ b/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "name": "asynckit", + "version": "0.4.0", + "description": "Minimal async jobs utility library, with streams support", + "main": "index.js", + "scripts": { + "clean": "rimraf coverage", + "lint": "eslint *.js lib/*.js test/*.js", + "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", + "win-test": "tape test/test-*.js", + "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", + "report": "istanbul report", + "size": "browserify index.js | size-table asynckit", + "debug": "tape test/test-*.js" + }, + "pre-commit": [ + "clean", + "lint", + "test", + "browser", + "report", + "size" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/alexindigo/asynckit.git" + }, + "keywords": [ + "async", + "jobs", + "parallel", + "serial", + "iterator", + "array", + "object", + "stream", + "destroy", + "terminate", + "abort" + ], + "author": "Alex Indigo ", + "license": "MIT", + "bugs": { + "url": "https://github.com/alexindigo/asynckit/issues" + }, + "homepage": "https://github.com/alexindigo/asynckit#readme", + "devDependencies": { + "browserify": "^13.0.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^2.11.9", + "eslint": "^2.9.0", + "istanbul": "^0.4.3", + "obake": "^0.1.2", + "phantomjs-prebuilt": "^2.1.7", + "pre-commit": "^1.1.3", + "reamde": "^1.1.0", + "rimraf": "^2.5.2", + "size-table": "^0.2.0", + "tap-spec": "^4.1.1", + "tape": "^4.5.1" + }, + "dependencies": {} +} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js new file mode 100644 index 0000000..3c50344 --- /dev/null +++ b/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = parallel; + +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); + + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } + + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; + } + + return terminator.bind(state, callback); +} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js new file mode 100644 index 0000000..6cd949a --- /dev/null +++ b/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +var serialOrdered = require('./serialOrdered.js'); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js new file mode 100644 index 0000000..607eafe --- /dev/null +++ b/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js new file mode 100644 index 0000000..d43465f --- /dev/null +++ b/node_modules/asynckit/stream.js @@ -0,0 +1,21 @@ +var inherits = require('util').inherits + , Readable = require('stream').Readable + , ReadableAsyncKit = require('./lib/readable_asynckit.js') + , ReadableParallel = require('./lib/readable_parallel.js') + , ReadableSerial = require('./lib/readable_serial.js') + , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') + ; + +// API +module.exports = +{ + parallel : ReadableParallel, + serial : ReadableSerial, + serialOrdered : ReadableSerialOrdered, +}; + +inherits(ReadableAsyncKit, Readable); + +inherits(ReadableParallel, ReadableAsyncKit); +inherits(ReadableSerial, ReadableAsyncKit); +inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md new file mode 100644 index 0000000..87a1407 --- /dev/null +++ b/node_modules/axios/CHANGELOG.md @@ -0,0 +1,874 @@ +# Changelog + +## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15) + + +### Bug Fixes + +* **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb)) +* **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1)) +* **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman "+4572/-3446 (#6238 )") +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-0 (#6231 )") +- avatar [Mitchell](https://github.com/Creaous "+9/-9 (#6300 )") +- avatar [Emmanuel](https://github.com/mannoeu "+2/-2 (#6196 )") +- avatar [Lucas Keller](https://github.com/ljkeller "+3/-0 (#6194 )") +- avatar [Aditya Mogili](https://github.com/ADITYA-176 "+1/-1 ()") +- avatar [Miroslav Petrov](https://github.com/petrovmiroslav "+1/-1 (#6243 )") + +## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) + + +### Bug Fixes + +* capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-26 (#6203 )") +- avatar [zhoulixiang](https://github.com/zh-lx "+0/-3 (#6186 )") + +## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24) + + +### Bug Fixes + +* fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39)) +* wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab)) + +### Contributors to this release + +- avatar [Ilya Priven](https://github.com/ikonst "+91/-8 (#5987 )") +- avatar [Zao Soula](https://github.com/zaosoula "+6/-6 (#5778 )") + +## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05) + + +### Bug Fixes + +* **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c)) +* **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+41/-6 (#6176 #6175 )") +- avatar [Jay](https://github.com/jasonsaayman "+6/-1 ()") + +## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03) + + +### Bug Fixes + +* **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e)) +* **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman "+34/-6 ()") +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+34/-3 (#6172 #6167 )") +- avatar [Guy Nesher](https://github.com/gnesher "+10/-10 (#6163 )") + +## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26) + + +### Bug Fixes + +* Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman "+15/-6 (#6145 )") +- avatar [Willian Agostini](https://github.com/WillianAgostini "+17/-2 (#6132 )") +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+3/-0 (#6084 )") + +## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14) + + +### Features + +* **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc)) + +### PRs +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )") +- avatar [Ng Choon Khon (CK)](https://github.com/ckng0221 "+4/-4 (#6073 )") +- avatar [Muhammad Noman](https://github.com/mnomanmemon "+2/-2 (#6048 )") + +## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08) + + +### Bug Fixes + +* **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288)) +* **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+432/-65 (#6059 #6056 #6055 )") +- avatar [Fabian Meyer](https://github.com/meyfa "+5/-2 (#5835 )") + +### PRs +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26) + + +### Bug Fixes + +* **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0)) +* **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8)) +* **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09)) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+449/-114 (#6032 #6021 #6011 #5932 #5931 )") +- avatar [Valentin Panov](https://github.com/valentin-panov "+4/-4 (#6028 )") +- avatar [Rinku Chaudhari](https://github.com/therealrinku "+1/-1 (#5889 )") + +## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26) + + +### Bug Fixes + +* **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859)) +* **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92)) +* **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd)) +* **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+89/-18 (#5919 #5917 )") +- avatar [David Dallas](https://github.com/DavidJDallas "+11/-5 ()") +- avatar [Sean Sattler](https://github.com/fb-sean "+2/-8 ()") +- avatar [Mustafa Ateş Uzun](https://github.com/0o001 "+4/-4 ()") +- avatar [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki "+2/-1 (#5892 )") +- avatar [Michael Di Prisco](https://github.com/Cadienvan "+1/-1 ()") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26) + + +### Bug Fixes + +* **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d)) +* **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628)) +* **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273)) +* **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17)) + + +### Features + +* export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1)) +* **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+66/-29 (#5839 #5837 #5836 #5832 #5831 )") +- avatar [夜葬](https://github.com/geekact "+42/-0 (#5324 )") +- avatar [Jonathan Budiman](https://github.com/JBudiman00 "+30/-0 (#5788 )") +- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-5 (#5791 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27) + + +### Bug Fixes + +* **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1)) +* **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09)) + + +### Features + +* **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb)) +* **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf)) + + +### Performance Improvements + +* **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+151/-16 (#5684 #5339 #5679 #5678 #5677 )") +- avatar [Arthur Fiorette](https://github.com/arthurfiorette "+19/-19 (#5525 )") +- avatar [PIYUSH NEGI](https://github.com/npiyush97 "+2/-18 (#5670 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19) + + +### Bug Fixes + +* **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2)) +* **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+48/-10 (#5665 #5661 #5663 )") +- avatar [Michael Di Prisco](https://github.com/Cadienvan "+2/-0 (#5445 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05) + + +### Bug Fixes + +* **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841)) +* **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+28/-10 (#5633 #5584 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22) + + +### Bug Fixes + +* **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a)) +* **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+38/-26 (#5564 )") +- avatar [lcysgsg](https://github.com/lcysgsg "+4/-0 (#5548 )") +- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-0 (#5444 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13) + + +### Bug Fixes + +* **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d)) +* **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1)) +* **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+11/-7 (#5545 #5535 #5542 )") +- avatar [陈若枫](https://github.com/ruofee "+2/-2 (#5467 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03) + + +### Bug Fixes + +* **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c)) +* **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+2/-1 (#5530 #5528 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01) + + +### Bug Fixes + +* **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120)) +* **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+27/-8 (#5521 #5518 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31) + + +### Bug Fixes + +* **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959)) +* **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c)) + + +### Features + +* **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )") +- avatar [ItsNotGoodName](https://github.com/ItsNotGoodName "+43/-2 (#5497 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28) + + +### Bug Fixes + +* **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26)) +* **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+24/-9 (#5503 #5502 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26) + + +### Bug Fixes + +* **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+82/-54 (#5499 )") +- ![avatar](https://avatars.githubusercontent.com/u/20516159?v=4&s=16) [Elliot Ford](https://github.com/EFord36 "+1/-1 (#5462 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22) + + +### Bug Fixes + +* **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0)) +* **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+242/-108 (#5486 #5482 )") +- ![avatar](https://avatars.githubusercontent.com/u/9430821?v=4&s=16) [Daniel Hillmann](https://github.com/hilleer "+1/-1 (#5478 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10) + + +### Bug Fixes + +* **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )") + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.2] - 2022-12-29 + +### Fixed +- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392) +- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377) +- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376) +- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375) +- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353) +- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345) + +### Chores +- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406) +- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403) +- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398) +- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397) +- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393) +- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342) +- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384) +- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364) + +### Contributors to this release +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- ![avatar](https://avatars.githubusercontent.com/u/1652293?v=4&s=16) [Winnie](https://github.com/winniehell) + +## [1.2.1] - 2022-12-05 + +### Changed +- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151) + +### Fixed +- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922) +- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022) +- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306) +- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139) + +### Refactors +- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308) +- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956) + +### Chores +- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307) +- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159) + +### Contributors to this release + +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Zachary Lysobey](https://github.com/zachlysobey) +- [Kevin Ennis](https://github.com/kevincennis) +- [Philipp Loose](https://github.com/phloose) +- [secondl1ght](https://github.com/secondl1ght) +- [wenzheng](https://github.com/0x30) +- [Ivan Barsukov](https://github.com/ovarn) +- [Arthur Fiorette](https://github.com/arthurfiorette) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.0] - 2022-11-10 + +### Changed + +- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162) +- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225) + +### Fixed + +- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224) +- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196) +- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071) +- fix: __dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269) +- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247) +- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250) + +### Refactors +- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) + +### Chores + +- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243) +- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077) +- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116) +- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205) +- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235) +- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266) +- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295) +- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294) +- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241) +- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245) +- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119) +- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265) +- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218) +- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170) +- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194) +- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193) +- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184) +- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197) +- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261) +- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207) +- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137) +- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025) + +### Contributors to this release + +- [Maddy Miller](https://github.com/me4502) +- [Amit Saini](https://github.com/amitsainii) +- [ecyrbe](https://github.com/ecyrbe) +- [Ikko Ashimine](https://github.com/eltociear) +- [Geeth Gunnampalli](https://github.com/thetechie7) +- [Shreem Asati](https://github.com/shreem-123) +- [Frieder Bluemle](https://github.com/friederbluemle) +- [윤세영](https://github.com/yunseyeong) +- [Claudio Busatto](https://github.com/cjcbusatto) +- [Remco Haszing](https://github.com/remcohaszing) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Csaba Maulis](https://github.com/om4csaba) +- [MoPaMo](https://github.com/MoPaMo) +- [Daniel Fjeldstad](https://github.com/w3bdesign) +- [Adrien Brunet](https://github.com/adrien-may) +- [Frazer Smith](https://github.com/Fdawgs) +- [HaiTao](https://github.com/836334258) +- [AZM](https://github.com/aziyatali) +- [relbns](https://github.com/relbns) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.3] - 2022-10-15 + +### Added + +- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) + +### Fixed + +- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109) +- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108) +- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097) +- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103) +- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060) +- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085) + +### Chores + +- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046) +- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054) +- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061) +- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084) + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) +- [scarf](https://github.com/scarf005) +- [Lenz Weber-Tronic](https://github.com/phryneas) +- [Arvindh](https://github.com/itsarvindh) +- [Félix Legrelle](https://github.com/FelixLgr) +- [Patrick Petrovic](https://github.com/ppati000) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [littledian](https://github.com/littledian) +- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.2] - 2022-10-07 + +### Fixed + +- Fixed broken exports for UMD builds. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.1] - 2022-10-07 + +### Fixed + +- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.0] - 2022-10-06 + +### Fixed + +- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003) +- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018) +- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021) +- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010) +- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030) +- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036) + +### Contributors to this release + +- [Trim21](https://github.com/trim21) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [shingo.sasaki](https://github.com/s-sasaki-0529) +- [Ivan Pepelko](https://github.com/ivanpepelko) +- [Richard Kořínek](https://github.com/risa) + +### PRs +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.0.0] - 2022-10-04 + +### Added + +- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624) +- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654) +- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596) +- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668) +- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096) +- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207) +- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229) +- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238) +- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248) +- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319) +- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580) +- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678) +- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436) +- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704) +- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711) +- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714) +- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715) +- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322) +- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721) +- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293) +- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725) +- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675) +- URL params serializer [#4734](https://github.com/axios/axios/pull/4734) +- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735) +- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804) +- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852) +- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903) +- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934) + +### Changed + +- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665) +- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590) +- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659) +- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492) +- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468) +- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387) +- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072) +- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185) +- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344) +- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224) +- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722) +- Updated Docs [#4742](https://github.com/axios/axios/pull/4742) +- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787) + + +### Deprecated +- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case. + +### Removed + +- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656) +- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596) +- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544) + +### Fixed + +- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649) +- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599) +- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587) +- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532) +- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505) +- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500) +- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414) +- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673) +- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435) +- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201) +- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232) +- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557) +- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261) +- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701) +- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708) +- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717) +- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718) +- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334) +- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731) +- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728) +- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743) +- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745) +- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738) +- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785) +- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805) +- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815) +- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819) +- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820) +- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857) +- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862) +- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874) +- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949) +- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960) + +### Chores +- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765) +- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770) +- Included dependency review [#4771](https://github.com/axios/axios/pull/4771) +- Update security.md [#4784](https://github.com/axios/axios/pull/4784) +- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854) +- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875) +- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941) +- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970) +- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993) +- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825) +- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853) +- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942) + +### Security + +- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) + +### Contributors to this release + +- [Bertrand Marron](https://github.com/tusbar) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Dan Mooney](https://github.com/danmooney) +- [Michael Li](https://github.com/xiaoyu-tamu) +- [aong](https://github.com/yxwzaxns) +- [Des Preston](https://github.com/despreston) +- [Ted Robertson](https://github.com/tredondo) +- [zhoulixiang](https://github.com/zh-lx) +- [Arthur Fiorette](https://github.com/arthurfiorette) +- [Kumar Shanu](https://github.com/Kr-Shanu) +- [JALAL](https://github.com/JLL32) +- [Jingyi Lin](https://github.com/MageeLin) +- [Philipp Loose](https://github.com/phloose) +- [Alexander Shchukin](https://github.com/sashsvamir) +- [Dave Cardwell](https://github.com/davecardwell) +- [Cat Scarlet](https://github.com/catscarlet) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Kai](https://github.com/Schweinepriester) +- [Maxime Bargiel](https://github.com/mbargiel) +- [Brian Helba](https://github.com/brianhelba) +- [reslear](https://github.com/reslear) +- [Jamie Slome](https://github.com/JamieSlome) +- [Landro3](https://github.com/Landro3) +- [rafw87](https://github.com/rafw87) +- [Afzal Sayed](https://github.com/afzalsayed96) +- [Koki Oyatsu](https://github.com/kaishuu0123) +- [Dave](https://github.com/wangcch) +- [暴走老七](https://github.com/baozouai) +- [Spencer](https://github.com/spalger) +- [Adrian Wieprzkowicz](https://github.com/Argeento) +- [Jamie Telin](https://github.com/lejahmie) +- [毛呆](https://github.com/aweikalee) +- [Kirill Shakirov](https://github.com/turisap) +- [Rraji Abdelbari](https://github.com/estarossa0) +- [Jelle Schutter](https://github.com/jelleschutter) +- [Tom Ceuppens](https://github.com/KyorCode) +- [Johann Cooper](https://github.com/JohannCooper) +- [Dimitris Halatsis](https://github.com/mitsos1os) +- [chenjigeng](https://github.com/chenjigeng) +- [João Gabriel Quaresma](https://github.com/joaoGabriel55) +- [Victor Augusto](https://github.com/VictorAugDB) +- [neilnaveen](https://github.com/neilnaveen) +- [Pavlos](https://github.com/psmoros) +- [Kiryl Valkovich](https://github.com/visortelle) +- [Naveen](https://github.com/naveensrinivasan) +- [wenzheng](https://github.com/0x30) +- [hcwhan](https://github.com/hcwhan) +- [Bassel Rachid](https://github.com/basselworkforce) +- [Grégoire Pineau](https://github.com/lyrixx) +- [felipedamin](https://github.com/felipedamin) +- [Karl Horky](https://github.com/karlhorky) +- [Yue JIN](https://github.com/kingyue737) +- [Usman Ali Siddiqui](https://github.com/usman250994) +- [WD](https://github.com/techbirds) +- [Günther Foidl](https://github.com/gfoidl) +- [Stephen Jennings](https://github.com/jennings) +- [C.T.Lin](https://github.com/chentsulin) +- [mia-z](https://github.com/mia-z) +- [Parth Banathia](https://github.com/Parth0105) +- [parth0105pluang](https://github.com/parth0105pluang) +- [Marco Weber](https://github.com/mrcwbr) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Willian Agostini](https://github.com/WillianAgostini) +- [Huyen Nguyen](https://github.com/huyenltnguyen) \ No newline at end of file diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE new file mode 100644 index 0000000..05006a5 --- /dev/null +++ b/node_modules/axios/LICENSE @@ -0,0 +1,7 @@ +# Copyright (c) 2014-present Matt Zabriskie & Collaborators + +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/node_modules/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md new file mode 100644 index 0000000..ec3ae0d --- /dev/null +++ b/node_modules/axios/MIGRATION_GUIDE.md @@ -0,0 +1,3 @@ +# Migration Guide + +## 0.x.x -> 1.1.0 diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md new file mode 100644 index 0000000..04e7601 --- /dev/null +++ b/node_modules/axios/README.md @@ -0,0 +1,1650 @@ +

+ Platinum sponsors +
+

+ +
+ + + + + + + + +

Alloy is the integration development platform that makes it simple and
fast for SaaS companies to launch critical user-facing integrations.

+

+ Sign up free • + Documentation +

+

+
+ +

+ Gold sponsors +

+

+ +
+ + + + + + + +

API-first authentication, authorization, and fraud prevention

+

+ Website • + DocumentationNode.js Backend SDK +

+
+ + +

+
+
+
+ +

Promise based HTTP client for the browser and node.js

+ +

+ Website • + Documentation +

+ +
+ +[![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) +[![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) +[![Build status](https://img.shields.io/github/actions/workflow/status/axios/axios/ci.yml?branch=v1.x&label=CI&logo=github&style=flat-square)](https://github.com/axios/axios/actions/workflows/ci.yml) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&style=flat-square)](https://gitpod.io/#https://github.com/axios/axios) +[![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) +[![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=axios&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.now.sh/result?p=axios) +[![npm bundle size](https://img.shields.io/bundlephobia/minzip/axios?style=flat-square)](https://bundlephobia.com/package/axios@latest) +[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](https://npm-stat.com/charts.html?package=axios) +[![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) +[![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) +[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) + + + + +
+ +## Table of Contents + + - [Features](#features) + - [Browser Support](#browser-support) + - [Installing](#installing) + - [Package manager](#package-manager) + - [CDN](#cdn) + - [Example](#example) + - [Axios API](#axios-api) + - [Request method aliases](#request-method-aliases) + - [Concurrency 👎](#concurrency-deprecated) + - [Creating an instance](#creating-an-instance) + - [Instance methods](#instance-methods) + - [Request Config](#request-config) + - [Response Schema](#response-schema) + - [Config Defaults](#config-defaults) + - [Global axios defaults](#global-axios-defaults) + - [Custom instance defaults](#custom-instance-defaults) + - [Config order of precedence](#config-order-of-precedence) + - [Interceptors](#interceptors) + - [Multiple Interceptors](#multiple-interceptors) + - [Handling Errors](#handling-errors) + - [Cancellation](#cancellation) + - [AbortController](#abortcontroller) + - [CancelToken 👎](#canceltoken-deprecated) + - [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) + - [URLSearchParams](#urlsearchparams) + - [Query string](#query-string-older-browsers) + - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams) + - [Using multipart/form-data format](#using-multipartform-data-format) + - [FormData](#formdata) + - [🆕 Automatic serialization](#-automatic-serialization-to-formdata) + - [Files Posting](#files-posting) + - [HTML Form Posting](#-html-form-posting-browser) + - [🆕 Progress capturing](#-progress-capturing) + - [🆕 Rate limiting](#-progress-capturing) + - [🆕 AxiosHeaders](#-axiosheaders) + - [Semver](#semver) + - [Promises](#promises) + - [TypeScript](#typescript) + - [Resources](#resources) + - [Credits](#credits) + - [License](#license) + +## Features + +- Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser +- Make [http](https://nodejs.org/api/http.html) requests from node.js +- Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API +- Intercept request and response +- Transform request and response data +- Cancel requests +- Automatic transforms for [JSON](https://www.json.org/json-en.html) data +- 🆕 Automatic data object serialization to `multipart/form-data` and `x-www-form-urlencoded` body encodings +- Client side support for protecting against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) + +## Browser Support + +![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | ![IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | +--- | --- | --- | --- | --- | --- | +Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | + +[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) + +## Installing + +### Package manager + +Using npm: + +```bash +$ npm install axios +``` + +Using bower: + +```bash +$ bower install axios +``` + +Using yarn: + +```bash +$ yarn add axios +``` + +Using pnpm: + +```bash +$ pnpm add axios +``` + +Once the package is installed, you can import the library using `import` or `require` approach: + +```js +import axios, {isCancel, AxiosError} from 'axios'; +``` + +You can also use the default export, since the named export is just a re-export from the Axios factory: + +```js +import axios from 'axios'; + +console.log(axios.isCancel('something')); +```` + +If you use `require` for importing, **only default export is available**: + +```js +const axios = require('axios'); + +console.log(axios.isCancel('something')); +``` + +For cases where something went wrong when trying to import a module into a custom or legacy environment, +you can try importing the module package directly: + +```js +const axios = require('axios/dist/browser/axios.cjs'); // browser commonJS bundle (ES2017) +// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017) +``` + +### CDN + +Using jsDelivr CDN (ES5 UMD browser module): + +```html + +``` + +Using unpkg CDN: + +```html + +``` + +## Example + +> **Note**: CommonJS usage +> In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`, use the following approach: + +```js +import axios from 'axios'; +//const axios = require('axios'); // legacy way + +// Make a request for a user with a given ID +axios.get('/user?ID=12345') + .then(function (response) { + // handle success + console.log(response); + }) + .catch(function (error) { + // handle error + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Optionally the request above could also be done as +axios.get('/user', { + params: { + ID: 12345 + } + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Want to use async/await? Add the `async` keyword to your outer function/method. +async function getUser() { + try { + const response = await axios.get('/user?ID=12345'); + console.log(response); + } catch (error) { + console.error(error); + } +} +``` + +> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet +> Explorer and older browsers, so use with caution. + +Performing a `POST` request + +```js +axios.post('/user', { + firstName: 'Fred', + lastName: 'Flintstone' + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }); +``` + +Performing multiple concurrent requests + +```js +function getUserAccount() { + return axios.get('/user/12345'); +} + +function getUserPermissions() { + return axios.get('/user/12345/permissions'); +} + +Promise.all([getUserAccount(), getUserPermissions()]) + .then(function (results) { + const acct = results[0]; + const perm = results[1]; + }); +``` + +## axios API + +Requests can be made by passing the relevant config to `axios`. + +##### axios(config) + +```js +// Send a POST request +axios({ + method: 'post', + url: '/user/12345', + data: { + firstName: 'Fred', + lastName: 'Flintstone' + } +}); +``` + +```js +// GET request for remote image in node.js +axios({ + method: 'get', + url: 'https://bit.ly/2mTM3nY', + responseType: 'stream' +}) + .then(function (response) { + response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) + }); +``` + +##### axios(url[, config]) + +```js +// Send a GET request (default method) +axios('/user/12345'); +``` + +### Request method aliases + +For convenience, aliases have been provided for all common request methods. + +##### axios.request(config) +##### axios.get(url[, config]) +##### axios.delete(url[, config]) +##### axios.head(url[, config]) +##### axios.options(url[, config]) +##### axios.post(url[, data[, config]]) +##### axios.put(url[, data[, config]]) +##### axios.patch(url[, data[, config]]) + +###### NOTE +When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. + +### Concurrency (Deprecated) +Please use `Promise.all` to replace the below functions. + +Helper functions for dealing with concurrent requests. + +axios.all(iterable) +axios.spread(callback) + +### Creating an instance + +You can create a new instance of axios with a custom config. + +##### axios.create([config]) + +```js +const instance = axios.create({ + baseURL: 'https://some-domain.com/api/', + timeout: 1000, + headers: {'X-Custom-Header': 'foobar'} +}); +``` + +### Instance methods + +The available instance methods are listed below. The specified config will be merged with the instance config. + +##### axios#request(config) +##### axios#get(url[, config]) +##### axios#delete(url[, config]) +##### axios#head(url[, config]) +##### axios#options(url[, config]) +##### axios#post(url[, data[, config]]) +##### axios#put(url[, data[, config]]) +##### axios#patch(url[, data[, config]]) +##### axios#getUri([config]) + +## Request Config + +These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. + +```js +{ + // `url` is the server URL that will be used for the request + url: '/user', + + // `method` is the request method to be used when making the request + method: 'get', // default + + // `baseURL` will be prepended to `url` unless `url` is absolute. + // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs + // to methods of that instance. + baseURL: 'https://some-domain.com/api/', + + // `transformRequest` allows changes to the request data before it is sent to the server + // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' + // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, + // FormData or Stream + // You may modify the headers object. + transformRequest: [function (data, headers) { + // Do whatever you want to transform the data + + return data; + }], + + // `transformResponse` allows changes to the response data to be made before + // it is passed to then/catch + transformResponse: [function (data) { + // Do whatever you want to transform the data + + return data; + }], + + // `headers` are custom headers to be sent + headers: {'X-Requested-With': 'XMLHttpRequest'}, + + // `params` are the URL parameters to be sent with the request + // Must be a plain object or a URLSearchParams object + params: { + ID: 12345 + }, + + // `paramsSerializer` is an optional config that allows you to customize serializing `params`. + paramsSerializer: { + + //Custom encoder function which sends key/value pairs in an iterative fashion. + encode?: (param: string): string => { /* Do custom operations here and return transformed string */ }, + + // Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour. + serialize?: (params: Record, options?: ParamsSerializerOptions ), + + //Configuration for formatting array indexes in the params. + indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes). + }, + + // `data` is the data to be sent as the request body + // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH' + // When no `transformRequest` is set, must be of one of the following types: + // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams + // - Browser only: FormData, File, Blob + // - Node only: Stream, Buffer, FormData (form-data package) + data: { + firstName: 'Fred' + }, + + // syntax alternative to send data into the body + // method post + // only the value is sent, not the key + data: 'Country=Brasil&City=Belo Horizonte', + + // `timeout` specifies the number of milliseconds before the request times out. + // If the request takes longer than `timeout`, the request will be aborted. + timeout: 1000, // default is `0` (no timeout) + + // `withCredentials` indicates whether or not cross-site Access-Control requests + // should be made using credentials + withCredentials: false, // default + + // `adapter` allows custom handling of requests which makes testing easier. + // Return a promise and supply a valid response (see lib/adapters/README.md). + adapter: function (config) { + /* ... */ + }, + + // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. + // This will set an `Authorization` header, overwriting any existing + // `Authorization` custom headers you have set using `headers`. + // Please note that only HTTP Basic auth is configurable through this parameter. + // For Bearer tokens and such, use `Authorization` custom headers instead. + auth: { + username: 'janedoe', + password: 's00pers3cret' + }, + + // `responseType` indicates the type of data that the server will respond with + // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' + // browser only: 'blob' + responseType: 'json', // default + + // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) + // Note: Ignored for `responseType` of 'stream' or client-side requests + // options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url', + // 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8', + // 'utf8', 'UTF8', 'utf16le', 'UTF16LE' + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `xsrfHeaderName` is the name of the http header that carries the xsrf token value + xsrfHeaderName: 'X-XSRF-TOKEN', // default + + // `undefined` (default) - set XSRF header only for the same origin requests + withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), + + // `onUploadProgress` allows handling of progress events for uploads + // browser & node.js + onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) { + // Do whatever you want with the Axios progress event + }, + + // `onDownloadProgress` allows handling of progress events for downloads + // browser & node.js + onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) { + // Do whatever you want with the Axios progress event + }, + + // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js + maxContentLength: 2000, + + // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed + maxBodyLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given + // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; otherwise, the promise will be + // rejected. + validateStatus: function (status) { + return status >= 200 && status < 300; // default + }, + + // `maxRedirects` defines the maximum number of redirects to follow in node.js. + // If set to 0, no redirects will be followed. + maxRedirects: 21, // default + + // `beforeRedirect` defines a function that will be called before redirect. + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + // If maxRedirects is set to 0, `beforeRedirect` is not used. + beforeRedirect: (options, { headers }) => { + if (options.hostname === "example.com") { + options.auth = "user:password"; + } + }, + + // `socketPath` defines a UNIX Socket to be used in node.js. + // e.g. '/var/run/docker.sock' to send requests to the docker daemon. + // Only either `socketPath` or `proxy` can be specified. + // If both are specified, `socketPath` is used. + socketPath: null, // default + + // `transport` determines the transport method that will be used to make the request. If defined, it will be used. Otherwise, if `maxRedirects` is 0, the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, which can handle redirects. + transport: undefined, // default + + // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http + // and https requests, respectively, in node.js. This allows options to be added like + // `keepAlive` that are not enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }), + + // `proxy` defines the hostname, port, and protocol of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // supplies credentials. + // This will set an `Proxy-Authorization` header, overwriting any existing + // `Proxy-Authorization` custom headers you have set using `headers`. + // If the proxy server uses HTTPS, then you must set the protocol to `https`. + proxy: { + protocol: 'https', + host: '127.0.0.1', + // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined + port: 9000, + auth: { + username: 'mikeymike', + password: 'rapunz3l' + } + }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + cancelToken: new CancelToken(function (cancel) { + }), + + // an alternative way to cancel Axios requests using AbortController + signal: new AbortController().signal, + + // `decompress` indicates whether or not the response body should be decompressed + // automatically. If set to `true` will also remove the 'content-encoding' header + // from the responses objects of all decompressed responses + // - Node only (XHR cannot turn off decompression) + decompress: true, // default + + // `insecureHTTPParser` boolean. + // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. + // This may allow interoperability with non-conformant HTTP implementations. + // Using the insecure parser should be avoided. + // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback + // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none + insecureHTTPParser: undefined, // default + + // transitional options for backward compatibility that may be removed in the newer versions + transitional: { + // silent JSON parsing mode + // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) + // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json') + silentJSONParsing: true, // default value for the current Axios version + + // try to parse the response string as JSON even if `responseType` is not 'json' + forcedJSONParsing: true, + + // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts + clarifyTimeoutError: false, + }, + + env: { + // The FormData class to be used to automatically serialize the payload into a FormData object + FormData: window?.FormData || global?.FormData + }, + + formSerializer: { + visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values + dots: boolean; // use dots instead of brackets format + metaTokens: boolean; // keep special endings like {} in parameter key + indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes + }, + + // http adapter only (node.js) + maxRate: [ + 100 * 1024, // 100KB/s upload limit, + 100 * 1024 // 100KB/s download limit + ] +} +``` + +## Response Schema + +The response for a request contains the following information. + +```js +{ + // `data` is the response that was provided by the server + data: {}, + + // `status` is the HTTP status code from the server response + status: 200, + + // `statusText` is the HTTP status message from the server response + statusText: 'OK', + + // `headers` the HTTP headers that the server responded with + // All header names are lowercase and can be accessed using the bracket notation. + // Example: `response.headers['content-type']` + headers: {}, + + // `config` is the config that was provided to `axios` for the request + config: {}, + + // `request` is the request that generated this response + // It is the last ClientRequest instance in node.js (in redirects) + // and an XMLHttpRequest instance in the browser + request: {} +} +``` + +When using `then`, you will receive the response as follows: + +```js +axios.get('/user/12345') + .then(function (response) { + console.log(response.data); + console.log(response.status); + console.log(response.statusText); + console.log(response.headers); + console.log(response.config); + }); +``` + +When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. + +## Config Defaults + +You can specify config defaults that will be applied to every request. + +### Global axios defaults + +```js +axios.defaults.baseURL = 'https://api.example.com'; + +// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. +// See below for an example using Custom instance defaults instead. +axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; + +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; +``` + +### Custom instance defaults + +```js +// Set config defaults when creating the instance +const instance = axios.create({ + baseURL: 'https://api.example.com' +}); + +// Alter defaults after instance has been created +instance.defaults.headers.common['Authorization'] = AUTH_TOKEN; +``` + +### Config order of precedence + +Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults/index.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. + +```js +// Create an instance using the config defaults provided by the library +// At this point the timeout config value is `0` as is the default for the library +const instance = axios.create(); + +// Override timeout default for the library +// Now all requests using this instance will wait 2.5 seconds before timing out +instance.defaults.timeout = 2500; + +// Override timeout for this request as it's known to take a long time +instance.get('/longRequest', { + timeout: 5000 +}); +``` + +## Interceptors + +You can intercept requests or responses before they are handled by `then` or `catch`. + +```js +// Add a request interceptor +axios.interceptors.request.use(function (config) { + // Do something before request is sent + return config; + }, function (error) { + // Do something with request error + return Promise.reject(error); + }); + +// Add a response interceptor +axios.interceptors.response.use(function (response) { + // Any status code that lie within the range of 2xx cause this function to trigger + // Do something with response data + return response; + }, function (error) { + // Any status codes that falls outside the range of 2xx cause this function to trigger + // Do something with response error + return Promise.reject(error); + }); +``` + +If you need to remove an interceptor later you can. + +```js +const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); +axios.interceptors.request.eject(myInterceptor); +``` + +You can also clear all interceptors for requests or responses. +```js +const instance = axios.create(); +instance.interceptors.request.use(function () {/*...*/}); +instance.interceptors.request.clear(); // Removes interceptors from requests +instance.interceptors.response.use(function () {/*...*/}); +instance.interceptors.response.clear(); // Removes interceptors from responses +``` + +You can add interceptors to a custom instance of axios. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () {/*...*/}); +``` + +When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay +in the execution of your axios request when the main thread is blocked (a promise is created under the hood for +the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag +to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. + +```js +axios.interceptors.request.use(function (config) { + config.headers.test = 'I am only a header!'; + return config; +}, null, { synchronous: true }); +``` + +If you want to execute a particular interceptor based on a runtime check, +you can add a `runWhen` function to the options object. The interceptor will not be executed **if and only if** the return +of `runWhen` is `false`. The function will be called with the config +object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an +asynchronous request interceptor that only needs to run at certain times. + +```js +function onGetCall(config) { + return config.method === 'get'; +} +axios.interceptors.request.use(function (config) { + config.headers.test = 'special get headers'; + return config; +}, null, { runWhen: onGetCall }); +``` + +### Multiple Interceptors + +Given you add multiple response interceptors +and when the response was fulfilled +- then each interceptor is executed +- then they are executed in the order they were added +- then only the last interceptor's result is returned +- then every interceptor receives the result of its predecessor +- and when the fulfillment-interceptor throws + - then the following fulfillment-interceptor is not called + - then the following rejection-interceptor is called + - once caught, another following fulfill-interceptor is called again (just like in a promise chain). + +Read [the interceptor tests](./test/specs/interceptors.spec.js) for seeing all this in code. + +## Error Types + +There are many different axios error messages that can appear that can provide basic information about the specifics of the error and where opportunities may lie in debugging. + +The general structure of axios errors is as follows: +| Property | Definition | +| -------- | ---------- | +| message | A quick summary of the error message and the status it failed with. | +| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. | +| stack | Provides the stack trace of the error. | +| config | An axios config object with specific instance configurations defined by the user from when the request was made | +| code | Represents an axios identified error. The table below lists out specific definitions for internal axios error. | +| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings. + +Below is a list of potential axios identified error +| Code | Definition | +| -------- | ---------- | +| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. | +| ERR_BAD_OPTION | Invalid option provided in axios configuration. | +| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. | +| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. | +| ERR_NETWORK | Network-related issue. +| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. +| ERR_DEPRECATED | Deprecated feature or method used in axios. +| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. +| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. | +| ERR_CANCELED | Feature or method is canceled explicitly by the user. +| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. +| ERR_INVALID_URL | Invalid URL provided for axios request. + +## Handling Errors + +the default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. + +```js +axios.get('/user/12345') + .catch(function (error) { + if (error.response) { + // The request was made and the server responded with a status code + // that falls out of the range of 2xx + console.log(error.response.data); + console.log(error.response.status); + console.log(error.response.headers); + } else if (error.request) { + // The request was made but no response was received + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of + // http.ClientRequest in node.js + console.log(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.log('Error', error.message); + } + console.log(error.config); + }); +``` + +Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error. + +```js +axios.get('/user/12345', { + validateStatus: function (status) { + return status < 500; // Resolve only if the status code is less than 500 + } +}) +``` + +Using `toJSON` you get an object with more information about the HTTP error. + +```js +axios.get('/user/12345') + .catch(function (error) { + console.log(error.toJSON()); + }); +``` + +## Cancellation + +### AbortController + +Starting from `v0.22.0` Axios supports AbortController to cancel requests in fetch API way: + +```js +const controller = new AbortController(); + +axios.get('/foo/bar', { + signal: controller.signal +}).then(function(response) { + //... +}); +// cancel the request +controller.abort() +``` + +### CancelToken `👎deprecated` + +You can also cancel a request using a *CancelToken*. + +> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises). + +> This API is deprecated since v0.22.0 and shouldn't be used in new projects + +You can create a cancel token using the `CancelToken.source` factory as shown below: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios.get('/user/12345', { + cancelToken: source.token +}).catch(function (thrown) { + if (axios.isCancel(thrown)) { + console.log('Request canceled', thrown.message); + } else { + // handle error + } +}); + +axios.post('/user/12345', { + name: 'new name' +}, { + cancelToken: source.token +}) + +// cancel the request (the message parameter is optional) +source.cancel('Operation canceled by the user.'); +``` + +You can also create a cancel token by passing an executor function to the `CancelToken` constructor: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get('/user/12345', { + cancelToken: new CancelToken(function executor(c) { + // An executor function receives a cancel function as a parameter + cancel = c; + }) +}); + +// cancel the request +cancel(); +``` + +> **Note:** you can cancel several requests with the same cancel token/abort controller. +> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request. + +> During the transition period, you can use both cancellation APIs, even for the same request: + +## Using `application/x-www-form-urlencoded` format + +### URLSearchParams + +By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded` format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers,and [ Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018). + +```js +const params = new URLSearchParams({ foo: 'bar' }); +params.append('extraparam', 'value'); +axios.post('/foo', params); +``` + +### Query string (Older browsers) + +For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). + +Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: + +```js +const qs = require('qs'); +axios.post('/foo', qs.stringify({ 'bar': 123 })); +``` + +Or in another way (ES6), + +```js +import qs from 'qs'; +const data = { 'bar': 123 }; +const options = { + method: 'POST', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data: qs.stringify(data), + url, +}; +axios(options); +``` + +### Older Node.js versions + +For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: + +```js +const querystring = require('querystring'); +axios.post('https://something.com/', querystring.stringify({ foo: 'bar' })); +``` + +You can also use the [`qs`](https://github.com/ljharb/qs) library. + +> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. + +### 🆕 Automatic serialization to URLSearchParams + +Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded". + +```js +const data = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], +}; + +await axios.postForm('https://postman-echo.com/post', data, + {headers: {'content-type': 'application/x-www-form-urlencoded'}} +); +``` + +The server will handle it as: + +```js + { + x: '1', + 'arr[]': [ '1', '2', '3' ], + 'arr2[0]': '1', + 'arr2[1][0]': '2', + 'arr2[2]': '3', + 'arr3[]': [ '1', '2', '3' ], + 'users[0][name]': 'Peter', + 'users[0][surname]': 'griffin', + 'users[1][name]': 'Thomas', + 'users[1][surname]': 'Anderson' + } +```` + +If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically + +```js + var app = express(); + + app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies + + app.post('/', function (req, res, next) { + // echo body as JSON + res.send(JSON.stringify(req.body)); + }); + + server = app.listen(3000); +``` + +## Using `multipart/form-data` format + +### FormData + +To send the data as a `multipart/formdata` you need to pass a formData instance as a payload. +Setting the `Content-Type` header is not required as Axios guesses it based on the payload type. + +```js +const formData = new FormData(); +formData.append('foo', 'bar'); + +axios.post('https://httpbin.org/post', formData); +``` + +In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: + +```js +const FormData = require('form-data'); + +const form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); + +axios.post('https://example.com', form) +``` + +### 🆕 Automatic serialization to FormData + +Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` +header is set to `multipart/form-data`. + +The following request will submit the data in a FormData format (Browser & Node.js): + +```js +import axios from 'axios'; + +axios.post('https://httpbin.org/post', {x: 1}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then(({data}) => console.log(data)); +``` + +In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. + +You can overload the FormData class by setting the `env.FormData` config variable, +but you probably won't need it in most cases: + +```js +const axios = require('axios'); +var FormData = require('form-data'); + +axios.post('https://httpbin.org/post', {x: 1, buf: new Buffer(10)}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then(({data}) => console.log(data)); +``` + +Axios FormData serializer supports some special endings to perform the following operations: + +- `{}` - serialize the value with JSON.stringify +- `[]` - unwrap the array-like object as separate fields with the same key + +> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects + +FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases: + +- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object +to a `FormData` object by following custom rules. + +- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects; + +- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key. +The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON. + +- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects + + - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`) + - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) + - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) + +Let's say we have an object like this one: + +```js +const obj = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], + 'obj2{}': [{x:1}] +}; +``` + +The following steps will be executed by the Axios serializer internally: + +```js +const formData = new FormData(); +formData.append('x', '1'); +formData.append('arr[]', '1'); +formData.append('arr[]', '2'); +formData.append('arr[]', '3'); +formData.append('arr2[0]', '1'); +formData.append('arr2[1][0]', '2'); +formData.append('arr2[2]', '3'); +formData.append('users[0][name]', 'Peter'); +formData.append('users[0][surname]', 'Griffin'); +formData.append('users[1][name]', 'Thomas'); +formData.append('users[1][surname]', 'Anderson'); +formData.append('obj2{}', '[{"x":1}]'); +``` + +Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` +which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`. + +## Files Posting + +You can easily submit a single file: + +```js +await axios.postForm('https://httpbin.org/post', { + 'myVar' : 'foo', + 'file': document.querySelector('#fileInput').files[0] +}); +``` + +or multiple files as `multipart/form-data`: + +```js +await axios.postForm('https://httpbin.org/post', { + 'files[]': document.querySelector('#fileInput').files +}); +``` + +`FileList` object can be passed directly: + +```js +await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files) +``` + +All files will be sent with the same field names: `files[]`. + +## 🆕 HTML Form Posting (browser) + +Pass HTML Form element as a payload to submit it as `multipart/form-data` content. + +```js +await axios.postForm('https://httpbin.org/post', document.querySelector('#htmlForm')); +``` + +`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`: + +```js +await axios.post('https://httpbin.org/post', document.querySelector('#htmlForm'), { + headers: { + 'Content-Type': 'application/json' + } +}) +``` + +For example, the Form + +```html +
+ + + + + + + + + +
+``` + +will be submitted as the following JSON object: + +```js +{ + "foo": "1", + "deep": { + "prop": { + "spaced": "3" + } + }, + "baz": [ + "4", + "5" + ], + "user": { + "age": "value2" + } +} +```` + +Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported. + +## 🆕 Progress capturing + +Axios supports both browser and node environments to capture request upload/download progress. + +```js +await axios.post(url, data, { + onUploadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; // in range [0..1] + bytes: number; // how many bytes have been transferred since the last trigger (delta) + estimated?: number; // estimated time in seconds + rate?: number; // upload speed in bytes + upload: true; // upload sign + }*/ + }, + + onDownloadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; + bytes: number; + estimated?: number; + rate?: number; // download speed in bytes + download: true; // download sign + }*/ + } +}); +``` + +You can also track stream upload/download progress in node.js: + +```js +const {data} = await axios.post(SERVER_URL, readableStream, { + onUploadProgress: ({progress}) => { + console.log((progress * 100).toFixed(2)); + }, + + headers: { + 'Content-Length': contentLength + }, + + maxRedirects: 0 // avoid buffering the entire stream +}); +```` + +> **Note:** +> Capturing FormData upload progress is not currently supported in node.js environments. + +> **⚠️ Warning** +> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment, +> as follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm. + + +## 🆕 Rate limiting + +Download and upload rate limits can only be set for the http adapter (node.js): + +```js +const {data} = await axios.post(LOCAL_SERVER_URL, myBuffer, { + onUploadProgress: ({progress, rate}) => { + console.log(`Upload [${(progress*100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`) + }, + + maxRate: [100 * 1024], // 100KB/s limit +}); +``` + +## 🆕 AxiosHeaders + +Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work. +Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons +and for a workaround when servers mistakenly consider the header's case. +The old approach of directly manipulating headers object is still available, but deprecated and not recommended for future usage. + +### Working with headers + +An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic. +The final headers object with string values is obtained by Axios by calling the `toJSON` method. + +> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network. + +The header value can be one of the following types: +- `string` - normal string value that will be sent to the server +- `null` - skip header when rendering to JSON +- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true` + to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`) +- `undefined` - value is not set + +> Note: The header value is considered set if it is not equal to undefined. + +The headers object is always initialized inside interceptors and transformers: + +```ts + axios.interceptors.request.use((request: InternalAxiosRequestConfig) => { + request.headers.set('My-header', 'value'); + + request.headers.set({ + "My-set-header1": "my-set-value1", + "My-set-header2": "my-set-value2" + }); + + request.headers.set('User-Agent', false); // disable subsequent setting the header by Axios + + request.headers.setContentType('text/plain'); + + request.headers['My-set-header2'] = 'newValue' // direct access is deprecated + + return request; + } + ); +```` + +You can iterate over an `AxiosHeaders` instance using a `for...of` statement: + +````js +const headers = new AxiosHeaders({ + foo: '1', + bar: '2', + baz: '3' +}); + +for(const [header, value] of headers) { + console.log(header, value); +} + +// foo 1 +// bar 2 +// baz 3 +```` + +### new AxiosHeaders(headers?) + +Constructs a new `AxiosHeaders` instance. + +``` +constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); +``` + +If the headers object is a string, it will be parsed as RAW HTTP headers. + +````js +const headers = new AxiosHeaders(` +Host: www.bing.com +User-Agent: curl/7.54.0 +Accept: */*`); + +console.log(headers); + +// Object [AxiosHeaders] { +// host: 'www.bing.com', +// 'user-agent': 'curl/7.54.0', +// accept: '*/*' +// } +```` + +### AxiosHeaders#set + +```ts +set(headerName, value: Axios, rewrite?: boolean); +set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean); +set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean); +``` + +The `rewrite` argument controls the overwriting behavior: +- `false` - do not overwrite if header's value is set (is not `undefined`) +- `undefined` (default) - overwrite the header unless its value is set to `false` +- `true` - rewrite anyway + +The option can also accept a user-defined function that determines whether the value should be overwritten or not. + +Returns `this`. + +### AxiosHeaders#get(header) + +``` + get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue; + get(headerName: string, parser: RegExp): RegExpExecArray | null; +```` + +Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`, +matcher function or internal key-value parser. + +```ts +const headers = new AxiosHeaders({ + 'Content-Type': 'multipart/form-data; boundary=Asrf456BGe4h' +}); + +console.log(headers.get('Content-Type')); +// multipart/form-data; boundary=Asrf456BGe4h + +console.log(headers.get('Content-Type', true)); // parse key-value pairs from a string separated with \s,;= delimiters: +// [Object: null prototype] { +// 'multipart/form-data': undefined, +// boundary: 'Asrf456BGe4h' +// } + + +console.log(headers.get('Content-Type', (value, name, headers) => { + return String(value).replace(/a/g, 'ZZZ'); +})); +// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h + +console.log(headers.get('Content-Type', /boundary=(\w+)/)?.[0]); +// boundary=Asrf456BGe4h + +``` + +Returns the value of the header. + +### AxiosHeaders#has(header, matcher?) + +``` +has(header: string, matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if the header is set (has no `undefined` value). + +### AxiosHeaders#delete(header, matcher?) + +``` +delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if at least one header has been removed. + +### AxiosHeaders#clear(matcher?) + +``` +clear(matcher?: AxiosHeaderMatcher): boolean; +``` + +Removes all headers. +Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value. + +```ts +const headers = new AxiosHeaders({ + 'foo': '1', + 'x-foo': '2', + 'x-bar': '3', +}); + +console.log(headers.clear(/^x-/)); // true + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' } +``` + +Returns `true` if at least one header has been cleared. + +### AxiosHeaders#normalize(format); + +If the headers object was changed directly, it can have duplicates with the same name but in different cases. +This method normalizes the headers object by combining duplicate keys into one. +Axios uses this method internally after calling each interceptor. +Set `format` to true for converting headers name to lowercase and capitalize the initial letters (`cOntEnt-type` => `Content-Type`) + +```js +const headers = new AxiosHeaders({ + 'foo': '1', +}); + +headers.Foo = '2'; +headers.FOO = '3'; + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' } +console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' } +console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' } +``` + +Returns `this`. + +### AxiosHeaders#concat(...targets) + +``` +concat(...targets: Array): AxiosHeaders; +``` + +Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers. + +Returns a new `AxiosHeaders` instance. + +### AxiosHeaders#toJSON(asStrings?) + +```` +toJSON(asStrings?: boolean): RawAxiosHeaders; +```` + +Resolve all internal headers values into a new null prototype object. +Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas. + +### AxiosHeaders.from(thing?) + +```` +from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; +```` + +Returns a new `AxiosHeaders` instance created from the raw headers passed in, +or simply returns the given headers object if it's an `AxiosHeaders` instance. + +### AxiosHeaders.concat(...targets) + +```` +concat(...targets: Array): AxiosHeaders; +```` + +Returns a new `AxiosHeaders` instance created by merging the target objects. + +### Shortcuts + +The following shortcuts are available: + +- `setContentType`, `getContentType`, `hasContentType` + +- `setContentLength`, `getContentLength`, `hasContentLength` + +- `setAccept`, `getAccept`, `hasAccept` + +- `setUserAgent`, `getUserAgent`, `hasUserAgent` + +- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding` + + +## Semver + +Until axios reaches a `1.0` release, breaking changes will be released with a new minor version. For example `0.5.1`, and `0.5.4` will have the same API, but `0.6.0` will have breaking changes. + +## Promises + +axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises). +If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). + +## TypeScript + +axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors. + +```typescript +let user: User = null; +try { + const { data } = await axios.get('/user?ID=12345'); + user = data.userDetails; +} catch (error) { + if (axios.isAxiosError(error)) { + handleAxiosError(error); + } else { + handleUnexpectedError(error); + } +} +``` + +Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats. +The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater. +If use ESM, your settings should be fine. +If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`. +If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`. + +## Online one-click setup + +You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js) + + +## Resources + +* [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) +* [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) +* [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) +* [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) + +## Credits + +axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. + +## License + +[MIT](LICENSE) diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md new file mode 100644 index 0000000..a5a2b7d --- /dev/null +++ b/node_modules/axios/SECURITY.md @@ -0,0 +1,6 @@ +# Reporting a Vulnerability + +If you discover a security vulnerability in axios please disclose it via [our huntr page](https://huntr.dev/repos/axios/axios/). Bounty eligibility, CVE assignment, response times and past reports are all there. + + +Thank you for improving the security of axios. diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js new file mode 100644 index 0000000..2649e27 --- /dev/null +++ b/node_modules/axios/dist/axios.js @@ -0,0 +1,3448 @@ +// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory()); +})(this, (function () { 'use strict'; + + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + _defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; + } + function _regeneratorRuntime() { + _regeneratorRuntime = function () { + return e; + }; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function (t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function (t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(typeof e + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function (e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function () { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function (e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function (t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function (t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + catch: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function (e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; + } + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : String(i); + } + function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); + } + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } + } + function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + function _toArray(arr) { + return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); + } + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + if (len == null || len > 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."); + } + + function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; + } + + // utils is a library of generic helper functions non-specific to axios + + var toString = Object.prototype.toString; + var getPrototypeOf = Object.getPrototypeOf; + var kindOf = function (cache) { + return function (thing) { + var str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); + }; + }(Object.create(null)); + var kindOfTest = function kindOfTest(type) { + type = type.toLowerCase(); + return function (thing) { + return kindOf(thing) === type; + }; + }; + var typeOfTest = function typeOfTest(type) { + return function (thing) { + return _typeof(thing) === type; + }; + }; + + /** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ + var isArray = Array.isArray; + + /** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ + var isUndefined = typeOfTest('undefined'); + + /** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ + function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); + } + + /** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ + var isArrayBuffer = kindOfTest('ArrayBuffer'); + + /** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ + function isArrayBufferView(val) { + var result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; + } + + /** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ + var isString = typeOfTest('string'); + + /** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ + var isFunction = typeOfTest('function'); + + /** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ + var isNumber = typeOfTest('number'); + + /** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ + var isObject = function isObject(thing) { + return thing !== null && _typeof(thing) === 'object'; + }; + + /** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ + var isBoolean = function isBoolean(thing) { + return thing === true || thing === false; + }; + + /** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ + var isPlainObject = function isPlainObject(val) { + if (kindOf(val) !== 'object') { + return false; + } + var prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); + }; + + /** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ + var isDate = kindOfTest('Date'); + + /** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ + var isFile = kindOfTest('File'); + + /** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ + var isBlob = kindOfTest('Blob'); + + /** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ + var isFileList = kindOfTest('FileList'); + + /** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ + var isStream = function isStream(val) { + return isObject(val) && isFunction(val.pipe); + }; + + /** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ + var isFormData = function isFormData(thing) { + var kind; + return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')); + }; + + /** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ + var isURLSearchParams = kindOfTest('URLSearchParams'); + + /** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ + var trim = function trim(str) { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }; + + /** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ + function forEach(obj, fn) { + var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, + _ref$allOwnKeys = _ref.allOwnKeys, + allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys; + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + var i; + var l; + + // Force an array if not already something iterable + if (_typeof(obj) !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + var len = keys.length; + var key; + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } + } + function findKey(obj, key) { + key = key.toLowerCase(); + var keys = Object.keys(obj); + var i = keys.length; + var _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; + } + var _global = function () { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : typeof window !== 'undefined' ? window : global; + }(); + var isContextDefined = function isContextDefined(context) { + return !isUndefined(context) && context !== _global; + }; + + /** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ + function merge( /* obj1, obj2, obj3, ... */ + ) { + var _ref2 = isContextDefined(this) && this || {}, + caseless = _ref2.caseless; + var result = {}; + var assignValue = function assignValue(val, key) { + var targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + }; + for (var i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; + } + + /** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ + var extend = function extend(a, b, thisArg) { + var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, + allOwnKeys = _ref3.allOwnKeys; + forEach(b, function (val, key) { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, { + allOwnKeys: allOwnKeys + }); + return a; + }; + + /** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ + var stripBOM = function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; + }; + + /** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ + var inherits = function inherits(constructor, superConstructor, props, descriptors) { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); + }; + + /** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ + var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) { + var props; + var i; + var prop; + var merged = {}; + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + return destObj; + }; + + /** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ + var endsWith = function endsWith(str, searchString, position) { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + var lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + + /** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ + var toArray = function toArray(thing) { + if (!thing) return null; + if (isArray(thing)) return thing; + var i = thing.length; + if (!isNumber(i)) return null; + var arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; + }; + + /** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ + // eslint-disable-next-line func-names + var isTypedArray = function (TypedArray) { + // eslint-disable-next-line func-names + return function (thing) { + return TypedArray && thing instanceof TypedArray; + }; + }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + + /** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ + var forEachEntry = function forEachEntry(obj, fn) { + var generator = obj && obj[Symbol.iterator]; + var iterator = generator.call(obj); + var result; + while ((result = iterator.next()) && !result.done) { + var pair = result.value; + fn.call(obj, pair[0], pair[1]); + } + }; + + /** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ + var matchAll = function matchAll(regExp, str) { + var matches; + var arr = []; + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + return arr; + }; + + /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ + var isHTMLForm = kindOfTest('HTMLFormElement'); + var toCamelCase = function toCamelCase(str) { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); + }; + + /* Creating a function that will check if an object has a property. */ + var hasOwnProperty = function (_ref4) { + var hasOwnProperty = _ref4.hasOwnProperty; + return function (obj, prop) { + return hasOwnProperty.call(obj, prop); + }; + }(Object.prototype); + + /** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ + var isRegExp = kindOfTest('RegExp'); + var reduceDescriptors = function reduceDescriptors(obj, reducer) { + var descriptors = Object.getOwnPropertyDescriptors(obj); + var reducedDescriptors = {}; + forEach(descriptors, function (descriptor, name) { + var ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + Object.defineProperties(obj, reducedDescriptors); + }; + + /** + * Makes all methods read-only + * @param {Object} obj + */ + + var freezeMethods = function freezeMethods(obj) { + reduceDescriptors(obj, function (descriptor, name) { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + var value = obj[name]; + if (!isFunction(value)) return; + descriptor.enumerable = false; + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + if (!descriptor.set) { + descriptor.set = function () { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); + }; + var toObjectSet = function toObjectSet(arrayOrString, delimiter) { + var obj = {}; + var define = function define(arr) { + arr.forEach(function (value) { + obj[value] = true; + }); + }; + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + return obj; + }; + var noop = function noop() {}; + var toFiniteNumber = function toFiniteNumber(value, defaultValue) { + value = +value; + return Number.isFinite(value) ? value : defaultValue; + }; + var ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + var DIGIT = '0123456789'; + var ALPHABET = { + DIGIT: DIGIT, + ALPHA: ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT + }; + var generateString = function generateString() { + var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; + var alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT; + var str = ''; + var length = alphabet.length; + while (size--) { + str += alphabet[Math.random() * length | 0]; + } + return str; + }; + + /** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ + function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); + } + var toJSONObject = function toJSONObject(obj) { + var stack = new Array(10); + var visit = function visit(source, i) { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + if (!('toJSON' in source)) { + stack[i] = source; + var target = isArray(source) ? [] : {}; + forEach(source, function (value, key) { + var reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + stack[i] = undefined; + return target; + } + } + return source; + }; + return visit(obj, 0); + }; + var isAsyncFn = kindOfTest('AsyncFunction'); + var isThenable = function isThenable(thing) { + return thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing["catch"]); + }; + var utils$1 = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isBoolean: isBoolean, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isRegExp: isRegExp, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isTypedArray: isTypedArray, + isFileList: isFileList, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM, + inherits: inherits, + toFlatObject: toFlatObject, + kindOf: kindOf, + kindOfTest: kindOfTest, + endsWith: endsWith, + toArray: toArray, + forEachEntry: forEachEntry, + matchAll: matchAll, + isHTMLForm: isHTMLForm, + hasOwnProperty: hasOwnProperty, + hasOwnProp: hasOwnProperty, + // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors: reduceDescriptors, + freezeMethods: freezeMethods, + toObjectSet: toObjectSet, + toCamelCase: toCamelCase, + noop: noop, + toFiniteNumber: toFiniteNumber, + findKey: findKey, + global: _global, + isContextDefined: isContextDefined, + ALPHABET: ALPHABET, + generateString: generateString, + isSpecCompliantForm: isSpecCompliantForm, + toJSONObject: toJSONObject, + isAsyncFn: isAsyncFn, + isThenable: isThenable + }; + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + function AxiosError(message, code, config, request, response) { + Error.call(this); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = new Error().stack; + } + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); + } + utils$1.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } + }); + var prototype$1 = AxiosError.prototype; + var descriptors = {}; + ['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL' + // eslint-disable-next-line func-names + ].forEach(function (code) { + descriptors[code] = { + value: code + }; + }); + Object.defineProperties(AxiosError, descriptors); + Object.defineProperty(prototype$1, 'isAxiosError', { + value: true + }); + + // eslint-disable-next-line func-names + AxiosError.from = function (error, code, config, request, response, customProps) { + var axiosError = Object.create(prototype$1); + utils$1.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, function (prop) { + return prop !== 'isAxiosError'; + }); + AxiosError.call(axiosError, error.message, code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + customProps && Object.assign(axiosError, customProps); + return axiosError; + }; + + // eslint-disable-next-line strict + var httpAdapter = null; + + /** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ + function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); + } + + /** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ + function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; + } + + /** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ + function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); + } + + /** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ + function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); + } + var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); + }); + + /** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + + /** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ + function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + }); + var metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + var visitor = options.visitor || defaultVisitor; + var dots = options.dots; + var indexes = options.indexes; + var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + var useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + function convertValue(value) { + if (value === null) return ''; + if (utils$1.isDate(value)) { + return value.toISOString(); + } + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + var arr = value; + if (value && !path && _typeof(value) === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); + }); + return false; + } + } + if (isVisitable(value)) { + return true; + } + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + var stack = []; + var exposedHelpers = Object.assign(predicates, { + defaultVisitor: defaultVisitor, + convertValue: convertValue, + isVisitable: isVisitable + }); + function build(value, path) { + if (utils$1.isUndefined(value)) return; + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + stack.push(value); + utils$1.forEach(value, function each(el, key) { + var result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + stack.pop(); + } + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + build(obj); + return formData; + } + + /** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ + function encode$1(str) { + var charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); + } + + /** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ + function AxiosURLSearchParams(params, options) { + this._pairs = []; + params && toFormData(params, this, options); + } + var prototype = AxiosURLSearchParams.prototype; + prototype.append = function append(name, value) { + this._pairs.push([name, value]); + }; + prototype.toString = function toString(encoder) { + var _encode = encoder ? function (value) { + return encoder.call(this, value, encode$1); + } : encode$1; + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); + }; + + /** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ + function encode(val) { + return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + } + + /** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ + function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + var _encode = options && options.encode || encode; + var serializeFn = options && options.serialize; + var serializedParams; + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); + } + if (serializedParams) { + var hashmarkIndex = url.indexOf("#"); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + return url; + } + + var InterceptorManager = /*#__PURE__*/function () { + function InterceptorManager() { + _classCallCheck(this, InterceptorManager); + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + _createClass(InterceptorManager, [{ + key: "use", + value: function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + }, { + key: "eject", + value: function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + }, { + key: "clear", + value: function clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + }, { + key: "forEach", + value: function forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } + }]); + return InterceptorManager; + }(); + var InterceptorManager$1 = InterceptorManager; + + var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false + }; + + var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + + var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + + var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + + var platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1 + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] + }; + + var hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + + /** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ + var hasStandardBrowserEnv = function (product) { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0; + }(typeof navigator !== 'undefined' && navigator.product); + + /** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ + var hasStandardBrowserWebWorkerEnv = function () { + return typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; + }(); + + var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv + }); + + var platform = _objectSpread2(_objectSpread2({}, utils), platform$1); + + function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function visitor(value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); + } + + /** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ + function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); + } + + /** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ + function arrayToObject(arr) { + var obj = {}; + var keys = Object.keys(arr); + var i; + var len = keys.length; + var key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; + } + + /** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ + function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + var name = path[index++]; + if (name === '__proto__') return true; + var isNumericKey = Number.isFinite(+name); + var isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + return !isNumericKey; + } + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + var result = buildPath(path, value, target[name], index); + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + return !isNumericKey; + } + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + var obj = {}; + utils$1.forEachEntry(formData, function (name, value) { + buildPath(parsePropPath(name), value, obj, 0); + }); + return obj; + } + return null; + } + + /** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ + function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + return (encoder || JSON.stringify)(rawValue); + } + var defaults = { + transitional: transitionalDefaults, + adapter: ['xhr', 'http'], + transformRequest: [function transformRequest(data, headers) { + var contentType = headers.getContentType() || ''; + var hasJSONContentType = contentType.indexOf('application/json') > -1; + var isObjectPayload = utils$1.isObject(data); + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + var isFormData = utils$1.isFormData(data); + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + var isFileList; + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + var _FormData = this.env && this.env.FormData; + return toFormData(isFileList ? { + 'files[]': data + } : data, _FormData && new _FormData(), this.formSerializer); + } + } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + return data; + }], + transformResponse: [function transformResponse(data) { + var transitional = this.transitional || defaults.transitional; + var forcedJSONParsing = transitional && transitional.forcedJSONParsing; + var JSONRequested = this.responseType === 'json'; + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { + var silentJSONParsing = transitional && transitional.silentJSONParsing; + var strictJSONParsing = !silentJSONParsing && JSONRequested; + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + return data; + }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } + }; + utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], function (method) { + defaults.headers[method] = {}; + }); + var defaults$1 = defaults; + + // RawAxiosHeaders whose duplicates are ignored by node + // c.f. https://nodejs.org/api/http.html#http_message_headers + var ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); + + /** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ + var parseHeaders = (function (rawHeaders) { + var parsed = {}; + var key; + var val; + var i; + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + if (!key || parsed[key] && ignoreDuplicateOf[key]) { + return; + } + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + return parsed; + }); + + var $internals = Symbol('internals'); + function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); + } + function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + } + function parseTokens(str) { + var tokens = Object.create(null); + var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + var match; + while (match = tokensRE.exec(str)) { + tokens[match[1]] = match[2]; + } + return tokens; + } + var isValidHeaderName = function isValidHeaderName(str) { + return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + }; + function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + if (isHeaderNameFilter) { + value = header; + } + if (!utils$1.isString(value)) return; + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } + } + function formatHeader(header) { + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) { + return _char.toUpperCase() + str; + }); + } + function buildAccessors(obj, header) { + var accessorName = utils$1.toCamelCase(' ' + header); + ['get', 'set', 'has'].forEach(function (methodName) { + Object.defineProperty(obj, methodName + accessorName, { + value: function value(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); + } + var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) { + function AxiosHeaders(headers) { + _classCallCheck(this, AxiosHeaders); + headers && this.set(headers); + } + _createClass(AxiosHeaders, [{ + key: "set", + value: function set(header, valueOrRewrite, rewrite) { + var self = this; + function setHeader(_value, _header, _rewrite) { + var lHeader = normalizeHeader(_header); + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + var key = utils$1.findKey(self, lHeader); + if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { + self[key || _header] = normalizeValue(_value); + } + } + var setHeaders = function setHeaders(headers, _rewrite) { + return utils$1.forEach(headers, function (_value, _header) { + return setHeader(_value, _header, _rewrite); + }); + }; + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + return this; + } + }, { + key: "get", + value: function get(header, parser) { + header = normalizeHeader(header); + if (header) { + var key = utils$1.findKey(this, header); + if (key) { + var value = this[key]; + if (!parser) { + return value; + } + if (parser === true) { + return parseTokens(value); + } + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + }, { + key: "has", + value: function has(header, matcher) { + header = normalizeHeader(header); + if (header) { + var key = utils$1.findKey(this, header); + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + return false; + } + }, { + key: "delete", + value: function _delete(header, matcher) { + var self = this; + var deleted = false; + function deleteHeader(_header) { + _header = normalizeHeader(_header); + if (_header) { + var key = utils$1.findKey(self, _header); + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + deleted = true; + } + } + } + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + return deleted; + } + }, { + key: "clear", + value: function clear(matcher) { + var keys = Object.keys(this); + var i = keys.length; + var deleted = false; + while (i--) { + var key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + return deleted; + } + }, { + key: "normalize", + value: function normalize(format) { + var self = this; + var headers = {}; + utils$1.forEach(this, function (value, header) { + var key = utils$1.findKey(headers, header); + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + var normalized = format ? formatHeader(header) : String(header).trim(); + if (normalized !== header) { + delete self[header]; + } + self[normalized] = normalizeValue(value); + headers[normalized] = true; + }); + return this; + } + }, { + key: "concat", + value: function concat() { + var _this$constructor; + for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) { + targets[_key] = arguments[_key]; + } + return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets)); + } + }, { + key: "toJSON", + value: function toJSON(asStrings) { + var obj = Object.create(null); + utils$1.forEach(this, function (value, header) { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + return obj; + } + }, { + key: _Symbol$iterator, + value: function value() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + }, { + key: "toString", + value: function toString() { + return Object.entries(this.toJSON()).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + header = _ref2[0], + value = _ref2[1]; + return header + ': ' + value; + }).join('\n'); + } + }, { + key: _Symbol$toStringTag, + get: function get() { + return 'AxiosHeaders'; + } + }], [{ + key: "from", + value: function from(thing) { + return thing instanceof this ? thing : new this(thing); + } + }, { + key: "concat", + value: function concat(first) { + var computed = new this(first); + for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + targets[_key2 - 1] = arguments[_key2]; + } + targets.forEach(function (target) { + return computed.set(target); + }); + return computed; + } + }, { + key: "accessor", + value: function accessor(header) { + var internals = this[$internals] = this[$internals] = { + accessors: {} + }; + var accessors = internals.accessors; + var prototype = this.prototype; + function defineAccessor(_header) { + var lHeader = normalizeHeader(_header); + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + return this; + } + }]); + return AxiosHeaders; + }(Symbol.iterator, Symbol.toStringTag); + AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + + // reserved names hotfix + utils$1.reduceDescriptors(AxiosHeaders.prototype, function (_ref3, key) { + var value = _ref3.value; + var mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: function get() { + return value; + }, + set: function set(headerValue) { + this[mapped] = headerValue; + } + }; + }); + utils$1.freezeMethods(AxiosHeaders); + var AxiosHeaders$1 = AxiosHeaders; + + /** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ + function transformData(fns, response) { + var config = this || defaults$1; + var context = response || config; + var headers = AxiosHeaders$1.from(context.headers); + var data = context.data; + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + headers.normalize(); + return data; + } + + function isCancel(value) { + return !!(value && value.__CANCEL__); + } + + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + function CanceledError(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + } + utils$1.inherits(CanceledError, AxiosError, { + __CANCEL__: true + }); + + /** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ + function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); + } + } + + var cookies = platform.hasStandardBrowserEnv ? + // Standard browser envs support document.cookie + { + write: function write(name, value, expires, path, domain, secure) { + var cookie = [name + '=' + encodeURIComponent(value)]; + utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + utils$1.isString(path) && cookie.push('path=' + path); + utils$1.isString(domain) && cookie.push('domain=' + domain); + secure === true && cookie.push('secure'); + document.cookie = cookie.join('; '); + }, + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return match ? decodeURIComponent(match[3]) : null; + }, + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } : + // Non-standard browser env (web workers, react-native) lack needed support. + { + write: function write() {}, + read: function read() { + return null; + }, + remove: function remove() {} + }; + + /** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ + function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); + } + + /** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ + function combineURLs(baseURL, relativeURL) { + return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; + } + + /** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ + function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; + } + + var isURLSameOrigin = platform.hasStandardBrowserEnv ? + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname + }; + } + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL; + return parsed.protocol === originURL.protocol && parsed.host === originURL.host; + }; + }() : + // Non standard browser envs (web workers, react-native) lack needed support. + function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + }(); + + function parseProtocol(url) { + var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; + } + + /** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ + function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + var bytes = new Array(samplesCount); + var timestamps = new Array(samplesCount); + var head = 0; + var tail = 0; + var firstSampleTS; + min = min !== undefined ? min : 1000; + return function push(chunkLength) { + var now = Date.now(); + var startedAt = timestamps[tail]; + if (!firstSampleTS) { + firstSampleTS = now; + } + bytes[head] = chunkLength; + timestamps[head] = now; + var i = tail; + var bytesCount = 0; + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + head = (head + 1) % samplesCount; + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + if (now - firstSampleTS < min) { + return; + } + var passed = startedAt && now - startedAt; + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; + } + + function progressEventReducer(listener, isDownloadStream) { + var bytesNotified = 0; + var _speedometer = speedometer(50, 250); + return function (e) { + var loaded = e.loaded; + var total = e.lengthComputable ? e.total : undefined; + var progressBytes = loaded - bytesNotified; + var rate = _speedometer(progressBytes); + var inRange = loaded <= total; + bytesNotified = loaded; + var data = { + loaded: loaded, + total: total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + data[isDownloadStream ? 'download' : 'upload'] = true; + listener(data); + }; + } + var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + var xhrAdapter = isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); + var responseType = config.responseType, + withXSRFToken = config.withXSRFToken; + var onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + var contentType; + if (utils$1.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + var _ref = contentType ? contentType.split(';').map(function (token) { + return token.trim(); + }).filter(Boolean) : [], + _ref2 = _toArray(_ref), + type = _ref2[0], + tokens = _ref2.slice(1); + requestHeaders.setContentType([type || 'multipart/form-data'].concat(_toConsumableArray(tokens)).join('; ')); + } + } + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + function onloadend() { + if (!request) { + return; + } + // Prepare the response + var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + var transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) { + // Add xsrf header + var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = function onCanceled(cancel) { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + var protocol = parseProtocol(fullPath); + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; + + var knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter + }; + utils$1.forEach(knownAdapters, function (fn, value) { + if (fn) { + try { + Object.defineProperty(fn, 'name', { + value: value + }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { + value: value + }); + } + }); + var renderReason = function renderReason(reason) { + return "- ".concat(reason); + }; + var isResolvedHandle = function isResolvedHandle(adapter) { + return utils$1.isFunction(adapter) || adapter === null || adapter === false; + }; + var adapters = { + getAdapter: function getAdapter(adapters) { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + var _adapters = adapters, + length = _adapters.length; + var nameOrAdapter; + var adapter; + var rejectedReasons = {}; + for (var i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + var id = void 0; + adapter = nameOrAdapter; + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + if (adapter === undefined) { + throw new AxiosError("Unknown adapter '".concat(id, "'")); + } + } + if (adapter) { + break; + } + rejectedReasons[id || '#' + i] = adapter; + } + if (!adapter) { + var reasons = Object.entries(rejectedReasons).map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + id = _ref2[0], + state = _ref2[1]; + return "adapter ".concat(id, " ") + (state === false ? 'is not supported by the environment' : 'is not available in the build'); + }); + var s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; + throw new AxiosError("There is no suitable adapter to dispatch the request " + s, 'ERR_NOT_SUPPORT'); + } + return adapter; + }, + adapters: knownAdapters + }; + + /** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ + function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } + } + + /** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ + function dispatchRequest(config) { + throwIfCancellationRequested(config); + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + response.headers = AxiosHeaders$1.from(response.headers); + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call(config, config.transformResponse, reason.response); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + return Promise.reject(reason); + }); + } + + var headersToObject = function headersToObject(thing) { + return thing instanceof AxiosHeaders$1 ? _objectSpread2({}, thing) : thing; + }; + + /** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ + function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + function getMergedValue(target, source, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ + caseless: caseless + }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + var mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: function headers(a, b) { + return mergeDeepProperties(headersToObject(a), headersToObject(b), true); + } + }; + utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + var merge = mergeMap[prop] || mergeDeepProperties; + var configValue = merge(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); + }); + return config; + } + + var VERSION = "1.6.8"; + + var validators$1 = {}; + + // eslint-disable-next-line func-names + ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) { + validators$1[type] = function validator(thing) { + return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; + }); + var deprecatedWarnings = {}; + + /** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ + validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return function (value, opt, opts) { + if (validator === false) { + throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); + } + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); + } + return validator ? validator(value, opt, opts) : true; + }; + }; + + /** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + + function assertOptions(options, schema, allowUnknown) { + if (_typeof(options) !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + var keys = Object.keys(options); + var i = keys.length; + while (i-- > 0) { + var opt = keys[i]; + var validator = schema[opt]; + if (validator) { + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } + } + var validator = { + assertOptions: assertOptions, + validators: validators$1 + }; + + var validators = validator.validators; + + /** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ + var Axios = /*#__PURE__*/function () { + function Axios(instanceConfig) { + _classCallCheck(this, Axios); + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + _createClass(Axios, [{ + key: "request", + value: (function () { + var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(configOrUrl, config) { + var dummy, stack; + return _regeneratorRuntime().wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _context.prev = 0; + _context.next = 3; + return this._request(configOrUrl, config); + case 3: + return _context.abrupt("return", _context.sent); + case 6: + _context.prev = 6; + _context.t0 = _context["catch"](0); + if (_context.t0 instanceof Error) { + Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error(); + + // slice off the Error: ... line + stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + if (!_context.t0.stack) { + _context.t0.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(_context.t0.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + _context.t0.stack += '\n' + stack; + } + } + throw _context.t0; + case 10: + case "end": + return _context.stop(); + } + }, _callee, this, [[0, 6]]); + })); + function request(_x, _x2) { + return _request2.apply(this, arguments); + } + return request; + }()) + }, { + key: "_request", + value: function _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + config = mergeConfig(this.defaults, config); + var _config = config, + transitional = _config.transitional, + paramsSerializer = _config.paramsSerializer, + headers = _config.headers; + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators["boolean"]), + forcedJSONParsing: validators.transitional(validators["boolean"]), + clarifyTimeoutError: validators.transitional(validators["boolean"]) + }, false); + } + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators["function"], + serialize: validators["function"] + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + var contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); + headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) { + delete headers[method]; + }); + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + var promise; + var i = 0; + var len; + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + promise = Promise.resolve(config); + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + return promise; + } + len = requestInterceptorChain.length; + var newConfig = config; + i = 0; + while (i < len) { + var onFulfilled = requestInterceptorChain[i++]; + var onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + i = 0; + len = responseInterceptorChain.length; + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + return promise; + } + }, { + key: "getUri", + value: function getUri(config) { + config = mergeConfig(this.defaults, config); + var fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } + }]); + return Axios; + }(); // Provide aliases for supported request methods + utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: (config || {}).data + })); + }; + }); + utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url: url, + data: data + })); + }; + } + Axios.prototype[method] = generateHTTPMethod(); + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); + }); + var Axios$1 = Axios; + + /** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ + var CancelToken = /*#__PURE__*/function () { + function CancelToken(executor) { + _classCallCheck(this, CancelToken); + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + var token = this; + + // eslint-disable-next-line func-names + this.promise.then(function (cancel) { + if (!token._listeners) return; + var i = token._listeners.length; + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = function (onfulfilled) { + var _resolve; + // eslint-disable-next-line func-names + var promise = new Promise(function (resolve) { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + return promise; + }; + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + _createClass(CancelToken, [{ + key: "throwIfRequested", + value: function throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + }, { + key: "subscribe", + value: function subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + }, { + key: "unsubscribe", + value: function unsubscribe(listener) { + if (!this._listeners) { + return; + } + var index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + }], [{ + key: "source", + value: function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; + } + }]); + return CancelToken; + }(); + var CancelToken$1 = CancelToken; + + /** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ + function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; + } + + /** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ + function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; + } + + var HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511 + }; + Object.entries(HttpStatusCode).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + HttpStatusCode[value] = key; + }); + var HttpStatusCode$1 = HttpStatusCode; + + /** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ + function createInstance(defaultConfig) { + var context = new Axios$1(defaultConfig); + var instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, { + allOwnKeys: true + }); + + // Copy context to instance + utils$1.extend(instance, context, null, { + allOwnKeys: true + }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + return instance; + } + + // Create the default instance to be exported + var axios = createInstance(defaults$1); + + // Expose Axios class to allow class inheritance + axios.Axios = Axios$1; + + // Expose Cancel & CancelToken + axios.CanceledError = CanceledError; + axios.CancelToken = CancelToken$1; + axios.isCancel = isCancel; + axios.VERSION = VERSION; + axios.toFormData = toFormData; + + // Expose AxiosError class + axios.AxiosError = AxiosError; + + // alias for CanceledError for backward compatibility + axios.Cancel = axios.CanceledError; + + // Expose all/spread + axios.all = function all(promises) { + return Promise.all(promises); + }; + axios.spread = spread; + + // Expose isAxiosError + axios.isAxiosError = isAxiosError; + + // Expose mergeConfig + axios.mergeConfig = mergeConfig; + axios.AxiosHeaders = AxiosHeaders$1; + axios.formToJSON = function (thing) { + return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + }; + axios.getAdapter = adapters.getAdapter; + axios.HttpStatusCode = HttpStatusCode$1; + axios["default"] = axios; + + return axios; + +})); +//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map new file mode 100644 index 0000000..d8022a2 --- /dev/null +++ b/node_modules/axios/dist/axios.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/adapters/xhr.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","kind","FormData","append","isURLSearchParams","trim","replace","forEach","obj","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","i","l","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","merge","_ref2","caseless","assignValue","targetKey","extend","a","b","_ref3","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","_ref4","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","hasOwnProp","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","each","token","join","isFlatArray","some","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","InterceptorManager","_classCallCheck","handlers","_createClass","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","_objectSpread","platform","toURLEncodedForm","data","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","parse","e","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","configurable","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","get","has","matcher","_delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","_slicedToArray","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","standardBrowserEnv","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","isURLSameOrigin","requestURL","nonStandardBrowserEnv","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","progress","estimated","event","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","requestData","requestHeaders","withXSRFToken","onCanceled","cancelToken","unsubscribe","signal","removeEventListener","Boolean","_toArray","_toConsumableArray","auth","username","password","unescape","btoa","fullPath","open","paramsSerializer","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","err","onreadystatechange","handleLoad","readyState","responseURL","setTimeout","onabort","handleAbort","ECONNABORTED","onerror","handleError","ERR_NETWORK","ontimeout","handleTimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","knownAdapters","http","httpAdapter","xhr","xhrAdapter","renderReason","reason","isResolvedHandle","getAdapter","adapters","_adapters","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","computeConfigValue","configValue","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","_callee$","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","newConfig","onFulfilled","onRejected","getUri","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","isAxiosError","payload","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/axios.min.js b/node_modules/axios/dist/axios.min.js new file mode 100644 index 0000000..06a84e7 --- /dev/null +++ b/node_modules/axios/dist/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(t){for(var r=1;r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:k(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function n(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=e)if("object"!==o(e)&&(e=[e]),j(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,q=function(e){return!R(e)&&e!==I};var z,M=(z="undefined"!=typeof Uint8Array&&w(Uint8Array),function(e){return z&&e instanceof z}),H=O("HTMLFormElement"),J=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),G=O("RegExp"),W=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};D(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},K="abcdefghijklmnopqrstuvwxyz",V="0123456789",X={DIGIT:V,ALPHA:K,ALPHA_DIGIT:K+K.toUpperCase()+V};var $=O("AsyncFunction"),Q={isArray:j,isArrayBuffer:A,isBuffer:function(e){return null!==e&&!R(e)&&null!==e.constructor&&!R(e.constructor)&&x(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||x(e.append)&&("formdata"===(t=E(e))||"object"===t&&x(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&A(e.buffer)},isString:T,isNumber:P,isBoolean:function(e){return!0===e||!1===e},isObject:N,isPlainObject:k,isUndefined:R,isDate:_,isFile:L,isBlob:C,isRegExp:G,isFunction:x,isStream:function(e){return N(e)&&x(e.pipe)},isURLSearchParams:U,isTypedArray:M,isFileList:F,forEach:D,merge:function e(){for(var t=q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&B(n,o)||o;k(n[i])&&k(t)?n[i]=e(n[i],t):k(t)?n[i]=e({},t):j(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return D(t,(function(t,n){r&&x(t)?e[n]=m(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&w(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:E,kindOfTest:O,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(j(e))return e;var t=e.length;if(!P(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:H,hasOwnProperty:J,hasOwnProp:J,reduceDescriptors:W,freezeMethods:function(e){W(e,(function(t,r){if(x(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];x(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return j(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:B,global:I,isContextDefined:q,ALPHABET:X,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&x(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(N(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=j(r)?[]:{};return D(r,(function(t,r){var i=e(t,n+1);!R(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:$,isThenable:function(e){return e&&(N(e)||x(e))&&x(e.then)&&x(e.catch)}};function Y(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}Q.inherits(Y,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Q.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Z=Y.prototype,ee={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ee[e]={value:e}})),Object.defineProperties(Y,ee),Object.defineProperty(Z,"isAxiosError",{value:!0}),Y.from=function(e,t,r,n,o,i){var a=Object.create(Z);return Q.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),Y.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function te(e){return Q.isPlainObject(e)||Q.isArray(e)}function re(e){return Q.endsWith(e,"[]")?e.slice(0,-2):e}function ne(e,t,r){return e?e.concat(t).map((function(e,t){return e=re(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var oe=Q.toFlatObject(Q,{},null,(function(e){return/^is[A-Z]/.test(e)}));function ie(e,t,r){if(!Q.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=Q.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Q.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&Q.isSpecCompliantForm(t);if(!Q.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Q.isDate(e))return e.toISOString();if(!u&&Q.isBlob(e))throw new Y("Blob is not supported. Use a Buffer instead.");return Q.isArrayBuffer(e)||Q.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(e,r,i){var u=e;if(e&&!i&&"object"===o(e))if(Q.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(Q.isArray(e)&&function(e){return Q.isArray(e)&&!e.some(te)}(e)||(Q.isFileList(e)||Q.endsWith(r,"[]"))&&(u=Q.toArray(e)))return r=re(r),u.forEach((function(e,n){!Q.isUndefined(e)&&null!==e&&t.append(!0===s?ne([r],n,a):null===s?r:r+"[]",c(e))})),!1;return!!te(e)||(t.append(ne(i,r,a),c(e)),!1)}var l=[],h=Object.assign(oe,{defaultVisitor:f,convertValue:c,isVisitable:te});if(!Q.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!Q.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),Q.forEach(r,(function(r,o){!0===(!(Q.isUndefined(r)||null===r)&&i.call(t,r,Q.isString(o)?o.trim():o,n,h))&&e(r,n?n.concat(o):[o])})),l.pop()}}(e),t}function ae(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&ie(e,this,t)}var ue=se.prototype;function ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function fe(e,t,r){if(!t)return e;var n,o=r&&r.encode||ce,i=r&&r.serialize;if(n=i?i(t,r):Q.isURLSearchParams(t)?t.toString():new se(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}ue.append=function(e,t){this._pairs.push([e,t])},ue.toString=function(e){var t=e?function(t){return e.call(this,t,ae)}:ae;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var le,he=function(){function e(){a(this,e),this.handlers=[]}return u(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){Q.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),pe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},de={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:se,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ye="undefined"!=typeof window&&"undefined"!=typeof document,ve=(le="undefined"!=typeof navigator&&navigator.product,ye&&["ReactNative","NativeScript","NS"].indexOf(le)<0),me="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ge=t(t({},Object.freeze({__proto__:null,hasBrowserEnv:ye,hasStandardBrowserWebWorkerEnv:me,hasStandardBrowserEnv:ve})),de);function be(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&Q.isArray(n)?n.length:i,s?(Q.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&Q.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&Q.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Q.isObject(e);if(i&&Q.isHTMLForm(e)&&(e=new FormData(e)),Q.isFormData(e))return o?JSON.stringify(be(e)):e;if(Q.isArrayBuffer(e)||Q.isBuffer(e)||Q.isStream(e)||Q.isFile(e)||Q.isBlob(e))return e;if(Q.isArrayBufferView(e))return e.buffer;if(Q.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ie(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return ge.isNode&&Q.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=Q.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return ie(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(Q.isString(e))try{return(t||JSON.parse)(e),Q.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||we.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&Q.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw Y.from(e,Y.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Q.forEach(["delete","get","head","post","put","patch"],(function(e){we.headers[e]={}}));var Ee=we,Oe=Q.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Se=Symbol("internals");function je(e){return e&&String(e).trim().toLowerCase()}function Re(e){return!1===e||null==e?e:Q.isArray(e)?e.map(Re):String(e)}function Ae(e,t,r,n,o){return Q.isFunction(n)?n.call(this,t,r):(o&&(t=r),Q.isString(t)?Q.isString(n)?-1!==t.indexOf(n):Q.isRegExp(n)?n.test(t):void 0:void 0)}var Te=function(e,t){function r(e){a(this,r),e&&this.set(e)}return u(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=je(t);if(!o)throw new Error("header name must be a non-empty string");var i=Q.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Re(e))}var i,a,s,u,c,f=function(e,t){return Q.forEach(e,(function(e,r){return o(e,r,t)}))};return Q.isPlainObject(e)||e instanceof this.constructor?f(e,t):Q.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&Oe[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,r),this}},{key:"get",value:function(e,t){if(e=je(e)){var r=Q.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(Q.isFunction(t))return t.call(this,n,r);if(Q.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=je(e)){var r=Q.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ae(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=je(e)){var o=Q.findKey(r,e);!o||t&&!Ae(0,r[o],o,t)||(delete r[o],n=!0)}}return Q.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ae(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return Q.forEach(this,(function(n,o){var i=Q.findKey(r,o);if(i)return t[i]=Re(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Re(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1?"since :\n"+s.map(De).join("\n"):" "+De(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function qe(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ke(null,e)}function ze(e){return qe(e),e.headers=xe.from(e.headers),e.data=Pe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ie(e.adapter||Ee.adapter)(e).then((function(t){return qe(e),t.data=Pe.call(e,e.transformResponse,t),t.headers=xe.from(t.headers),t}),(function(t){return Ne(t)||(qe(e),t&&t.response&&(t.response.data=Pe.call(e,e.transformResponse,t.response),t.response.headers=xe.from(t.response.headers))),Promise.reject(t)}))}var Me=function(e){return e instanceof xe?t({},e):e};function He(e,t){t=t||{};var r={};function n(e,t,r){return Q.isPlainObject(e)&&Q.isPlainObject(t)?Q.merge.call({caseless:r},e,t):Q.isPlainObject(t)?Q.merge({},t):Q.isArray(t)?t.slice():t}function o(e,t,r){return Q.isUndefined(t)?Q.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!Q.isUndefined(t))return n(void 0,t)}function a(e,t){return Q.isUndefined(t)?Q.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(Me(e),Me(t),!0)}};return Q.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);Q.isUndefined(a)&&i!==s||(r[n]=a)})),r}var Je="1.6.8",Ge={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ge[e]=function(r){return o(r)===e||"a"+(t<1?"n ":" ")+e}}));var We={};Ge.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.8] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new Y(n(o," has been removed"+(t?" in "+t:"")),Y.ERR_DEPRECATED);return t&&!We[o]&&(We[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var Ke={assertOptions:function(e,t,r){if("object"!==o(e))throw new Y("options must be an object",Y.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var a=n[i],s=t[a];if(s){var u=e[a],c=void 0===u||s(u,a,e);if(!0!==c)throw new Y("option "+a+" must be "+c,Y.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Y("Unknown option "+a,Y.ERR_BAD_OPTION)}},validators:Ge},Ve=Ke.validators,Xe=function(){function e(t){a(this,e),this.defaults=t,this.interceptors={request:new he,response:new he}}var t,n;return u(e,[{key:"request",value:(t=r().mark((function e(t,n){var o,i;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,n);case 3:return e.abrupt("return",e.sent);case 6:throw e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error&&(Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error,i=o.stack?o.stack.replace(/^.+\n/,""):"",e.t0.stack?i&&!String(e.t0.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+i):e.t0.stack=i),e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])})),n=function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(e){i(a,n,o,s,u,"next",e)}function u(e){i(a,n,o,s,u,"throw",e)}s(void 0)}))},function(e,t){return n.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=He(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Ke.assertOptions(n,{silentJSONParsing:Ve.transitional(Ve.boolean),forcedJSONParsing:Ve.transitional(Ve.boolean),clarifyTimeoutError:Ve.transitional(Ve.boolean)},!1),null!=o&&(Q.isFunction(o)?t.paramsSerializer={serialize:o}:Ke.assertOptions(o,{encode:Ve.function,serialize:Ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Q.merge(i.common,i[t.method]);i&&Q.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=xe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var p=[ze.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new ke(e,t,o),r(n.reason))}))}return u(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Ye={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ye).forEach((function(e){var t=f(e,2),r=t[0],n=t[1];Ye[n]=r}));var Ze=Ye;var et=function e(t){var r=new $e(t),n=m($e.prototype.request,r);return Q.extend(n,$e.prototype,r,{allOwnKeys:!0}),Q.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(He(t,r))},n}(Ee);return et.Axios=$e,et.CanceledError=ke,et.CancelToken=Qe,et.isCancel=Ne,et.VERSION=Je,et.toFormData=ie,et.AxiosError=Y,et.Cancel=et.CanceledError,et.all=function(e){return Promise.all(e)},et.spread=function(e){return function(t){return e.apply(null,t)}},et.isAxiosError=function(e){return Q.isObject(e)&&!0===e.isAxiosError},et.mergeConfig=He,et.AxiosHeaders=xe,et.formToJSON=function(e){return be(Q.isHTMLForm(e)?new FormData(e):e)},et.getAdapter=Ie,et.HttpStatusCode=Ze,et.default=et,et})); +//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map new file mode 100644 index 0000000..0bcd018 --- /dev/null +++ b/node_modules/axios/dist/axios.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/platform/common/utils.js","../lib/defaults/transitional.js","../lib/platform/browser/index.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/index.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/helpers/isURLSameOrigin.js","../lib/adapters/xhr.js","../lib/helpers/speedometer.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n"],"names":["bind","fn","thisArg","apply","arguments","cache","toString","Object","prototype","getPrototypeOf","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","i","l","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","_ref4","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","_ref2","this","caseless","result","assignValue","targetKey","extend","a","b","_ref3","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","serializeFn","serialize","hashmarkIndex","encoder","product","InterceptorManager$1","InterceptorManager","_classCallCheck","handlers","_createClass","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","_objectSpread","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","rawHeaders","parsed","setHeaders","line","substring","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","_slicedToArray","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","onCanceled","requestData","requestHeaders","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","_toConsumableArray","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","isURLSameOrigin","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","wrap","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken$1","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter"],"mappings":"mrTAEe,SAASA,EAAKC,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAASE,WAE7B,CCAA,IAGgBC,EAHTC,EAAYC,OAAOC,UAAnBF,SACAG,EAAkBF,OAAlBE,eAEDC,GAAUL,EAGbE,OAAOI,OAAO,MAHQ,SAAAC,GACrB,IAAMC,EAAMP,EAASQ,KAAKF,GAC1B,OAAOP,EAAMQ,KAASR,EAAMQ,GAAOA,EAAIE,MAAM,GAAI,GAAGC,iBAGlDC,EAAa,SAACC,GAElB,OADAA,EAAOA,EAAKF,cACL,SAACJ,GAAK,OAAKF,EAAOE,KAAWM,CAAI,CAC1C,EAEMC,EAAa,SAAAD,GAAI,OAAI,SAAAN,GAAK,OAAIQ,EAAOR,KAAUM,CAAI,CAAA,EASlDG,EAAWC,MAAXD,QASDE,EAAcJ,EAAW,aAqB/B,IAAMK,EAAgBP,EAAW,eA2BjC,IAAMQ,EAAWN,EAAW,UAQtBO,EAAaP,EAAW,YASxBQ,EAAWR,EAAW,UAStBS,EAAW,SAAChB,GAAK,OAAe,OAAVA,GAAmC,WAAjBQ,EAAOR,EAAkB,EAiBjEiB,EAAgB,SAACC,GACrB,GAAoB,WAAhBpB,EAAOoB,GACT,OAAO,EAGT,IAAMtB,EAAYC,EAAeqB,GACjC,QAAsB,OAAdtB,GAAsBA,IAAcD,OAAOC,WAAkD,OAArCD,OAAOE,eAAeD,IAA0BuB,OAAOC,eAAeF,GAAUC,OAAOE,YAAYH,EACrK,EASMI,EAASjB,EAAW,QASpBkB,EAASlB,EAAW,QASpBmB,EAASnB,EAAW,QASpBoB,EAAapB,EAAW,YAsCxBqB,EAAoBrB,EAAW,mBA2BrC,SAASsB,EAAQC,EAAKvC,GAA+B,IAM/CwC,EACAC,EAP+CC,EAAAvC,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAJ,CAAE,EAAA0C,EAAAH,EAAxBI,WAAAA,OAAa,IAAHD,GAAQA,EAE3C,GAAIN,QAaJ,GALmB,WAAfpB,EAAOoB,KAETA,EAAM,CAACA,IAGLnB,EAAQmB,GAEV,IAAKC,EAAI,EAAGC,EAAIF,EAAII,OAAQH,EAAIC,EAAGD,IACjCxC,EAAGa,KAAK,KAAM0B,EAAIC,GAAIA,EAAGD,OAEtB,CAEL,IAEIQ,EAFEC,EAAOF,EAAaxC,OAAO2C,oBAAoBV,GAAOjC,OAAO0C,KAAKT,GAClEW,EAAMF,EAAKL,OAGjB,IAAKH,EAAI,EAAGA,EAAIU,EAAKV,IACnBO,EAAMC,EAAKR,GACXxC,EAAGa,KAAK,KAAM0B,EAAIQ,GAAMA,EAAKR,EAEjC,CACF,CAEA,SAASY,EAAQZ,EAAKQ,GACpBA,EAAMA,EAAIhC,cAIV,IAHA,IAEIqC,EAFEJ,EAAO1C,OAAO0C,KAAKT,GACrBC,EAAIQ,EAAKL,OAENH,KAAM,GAEX,GAAIO,KADJK,EAAOJ,EAAKR,IACKzB,cACf,OAAOqC,EAGX,OAAO,IACT,CAEA,IAAMC,EAEsB,oBAAfC,WAAmCA,WACvB,oBAATC,KAAuBA,KAA0B,oBAAXC,OAAyBA,OAASC,OAGlFC,EAAmB,SAACC,GAAO,OAAMrC,EAAYqC,IAAYA,IAAYN,CAAO,EAoDlF,IA8HsBO,EAAhBC,GAAgBD,EAKG,oBAAfE,YAA8BtD,EAAesD,YAH9C,SAAAnD,GACL,OAAOiD,GAAcjD,aAAiBiD,IA6CpCG,EAAa/C,EAAW,mBAWxBgD,EAAkB,SAAAC,GAAA,IAAED,EAAmE1D,OAAOC,UAA1EyD,eAAc,OAAM,SAACzB,EAAK2B,GAAI,OAAKF,EAAenD,KAAK0B,EAAK2B,EAAK,CAAA,CAAnE,GASlBC,EAAWnD,EAAW,UAEtBoD,EAAoB,SAAC7B,EAAK8B,GAC9B,IAAMC,EAAchE,OAAOiE,0BAA0BhC,GAC/CiC,EAAqB,CAAA,EAE3BlC,EAAQgC,GAAa,SAACG,EAAYC,GAChC,IAAIC,GAC2C,KAA1CA,EAAMN,EAAQI,EAAYC,EAAMnC,MACnCiC,EAAmBE,GAAQC,GAAOF,EAEtC,IAEAnE,OAAOsE,iBAAiBrC,EAAKiC,EAC/B,EAsDMK,EAAQ,6BAERC,EAAQ,aAERC,EAAW,CACfD,MAAAA,EACAD,MAAAA,EACAG,YAAaH,EAAQA,EAAMI,cAAgBH,GAwB7C,IA+BMI,EAAYlE,EAAW,iBAKdmE,EAAA,CACb/D,QAAAA,EACAG,cAAAA,EACA6D,SAnnBF,SAAkBvD,GAChB,OAAe,OAARA,IAAiBP,EAAYO,IAA4B,OAApBA,EAAIwD,cAAyB/D,EAAYO,EAAIwD,cACpF5D,EAAWI,EAAIwD,YAAYD,WAAavD,EAAIwD,YAAYD,SAASvD,EACxE,EAinBEyD,WAreiB,SAAC3E,GAClB,IAAI4E,EACJ,OAAO5E,IACgB,mBAAb6E,UAA2B7E,aAAiB6E,UAClD/D,EAAWd,EAAM8E,UACY,cAA1BF,EAAO9E,EAAOE,KAEL,WAAT4E,GAAqB9D,EAAWd,EAAMN,WAAkC,sBAArBM,EAAMN,YAIlE,EA2dEqF,kBA/lBF,SAA2B7D,GAOzB,MAL4B,oBAAhB8D,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAO/D,GAElBA,GAASA,EAAIgE,QAAYtE,EAAcM,EAAIgE,OAGzD,EAwlBErE,SAAAA,EACAE,SAAAA,EACAoE,UA/iBgB,SAAAnF,GAAK,OAAc,IAAVA,IAA4B,IAAVA,CAAe,EAgjB1DgB,SAAAA,EACAC,cAAAA,EACAN,YAAAA,EACAW,OAAAA,EACAC,OAAAA,EACAC,OAAAA,EACAgC,SAAAA,EACA1C,WAAAA,EACAsE,SA3fe,SAAClE,GAAG,OAAKF,EAASE,IAAQJ,EAAWI,EAAImE,KAAK,EA4f7D3D,kBAAAA,EACAwB,aAAAA,EACAzB,WAAAA,EACAE,QAAAA,EACA2D,MA/XF,SAASA,IAgBP,IAfA,IAAAC,EAAmBxC,EAAiByC,OAASA,MAAQ,CAAE,EAAhDC,EAAQF,EAARE,SACDC,EAAS,CAAA,EACTC,EAAc,SAACzE,EAAKkB,GACxB,IAAMwD,EAAYH,GAAYjD,EAAQkD,EAAQtD,IAAQA,EAClDnB,EAAcyE,EAAOE,KAAe3E,EAAcC,GACpDwE,EAAOE,GAAaN,EAAMI,EAAOE,GAAY1E,GACpCD,EAAcC,GACvBwE,EAAOE,GAAaN,EAAM,CAAE,EAAEpE,GACrBT,EAAQS,GACjBwE,EAAOE,GAAa1E,EAAIf,QAExBuF,EAAOE,GAAa1E,GAIfW,EAAI,EAAGC,EAAItC,UAAUwC,OAAQH,EAAIC,EAAGD,IAC3CrC,UAAUqC,IAAMF,EAAQnC,UAAUqC,GAAI8D,GAExC,OAAOD,CACT,EA4WEG,OAhWa,SAACC,EAAGC,EAAGzG,GAA8B,IAAA0G,EAAAxG,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAP,CAAE,EAAf2C,EAAU6D,EAAV7D,WAQ9B,OAPAR,EAAQoE,GAAG,SAAC7E,EAAKkB,GACX9C,GAAWwB,EAAWI,GACxB4E,EAAE1D,GAAOhD,EAAK8B,EAAK5B,GAEnBwG,EAAE1D,GAAOlB,CAEb,GAAG,CAACiB,WAAAA,IACG2D,CACT,EAwVEG,KA5dW,SAAChG,GAAG,OAAKA,EAAIgG,KACxBhG,EAAIgG,OAAShG,EAAIiG,QAAQ,qCAAsC,GAAG,EA4dlEC,SAhVe,SAACC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQjG,MAAM,IAEnBiG,CACT,EA4UEE,SAjUe,SAAC5B,EAAa6B,EAAkBC,EAAO7C,GACtDe,EAAY9E,UAAYD,OAAOI,OAAOwG,EAAiB3G,UAAW+D,GAClEe,EAAY9E,UAAU8E,YAAcA,EACpC/E,OAAO8G,eAAe/B,EAAa,QAAS,CAC1CgC,MAAOH,EAAiB3G,YAE1B4G,GAAS7G,OAAOgH,OAAOjC,EAAY9E,UAAW4G,EAChD,EA2TEI,aAhTmB,SAACC,EAAWC,EAASC,EAAQC,GAChD,IAAIR,EACA3E,EACA0B,EACE0D,EAAS,CAAA,EAIf,GAFAH,EAAUA,GAAW,GAEJ,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IADAjF,GADA2E,EAAQ7G,OAAO2C,oBAAoBuE,IACzB7E,OACHH,KAAM,GACX0B,EAAOiD,EAAM3E,GACPmF,IAAcA,EAAWzD,EAAMsD,EAAWC,IAAcG,EAAO1D,KACnEuD,EAAQvD,GAAQsD,EAAUtD,GAC1B0D,EAAO1D,IAAQ,GAGnBsD,GAAuB,IAAXE,GAAoBlH,EAAegH,EACjD,OAASA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAclH,OAAOC,WAEtF,OAAOkH,CACT,EAyREhH,OAAAA,EACAO,WAAAA,EACA6G,SAhRe,SAACjH,EAAKkH,EAAcC,GACnCnH,EAAMoH,OAAOpH,SACIgC,IAAbmF,GAA0BA,EAAWnH,EAAI+B,UAC3CoF,EAAWnH,EAAI+B,QAEjBoF,GAAYD,EAAanF,OACzB,IAAMsF,EAAYrH,EAAIsH,QAAQJ,EAAcC,GAC5C,OAAsB,IAAfE,GAAoBA,IAAcF,CAC3C,EAyQEI,QA/Pc,SAACxH,GACf,IAAKA,EAAO,OAAO,KACnB,GAAIS,EAAQT,GAAQ,OAAOA,EAC3B,IAAI6B,EAAI7B,EAAMgC,OACd,IAAKjB,EAASc,GAAI,OAAO,KAEzB,IADA,IAAM4F,EAAM,IAAI/G,MAAMmB,GACfA,KAAM,GACX4F,EAAI5F,GAAK7B,EAAM6B,GAEjB,OAAO4F,CACT,EAsPEC,aA5NmB,SAAC9F,EAAKvC,GAOzB,IANA,IAIIqG,EAFErE,GAFYO,GAAOA,EAAIT,OAAOE,WAETnB,KAAK0B,IAIxB8D,EAASrE,EAASsG,UAAYjC,EAAOkC,MAAM,CACjD,IAAMC,EAAOnC,EAAOgB,MACpBrH,EAAGa,KAAK0B,EAAKiG,EAAK,GAAIA,EAAK,GAC7B,CACF,EAkNEC,SAxMe,SAACC,EAAQ9H,GAIxB,IAHA,IAAI+H,EACEP,EAAM,GAE4B,QAAhCO,EAAUD,EAAOE,KAAKhI,KAC5BwH,EAAIS,KAAKF,GAGX,OAAOP,CACT,EAgMErE,WAAAA,EACAC,eAAAA,EACA8E,WAAY9E,EACZI,kBAAAA,EACA2E,cAxJoB,SAACxG,GACrB6B,EAAkB7B,GAAK,SAACkC,EAAYC,GAElC,GAAIjD,EAAWc,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU2F,QAAQxD,GAC/D,OAAO,EAGT,IAAM2C,EAAQ9E,EAAImC,GAEbjD,EAAW4F,KAEhB5C,EAAWuE,YAAa,EAEpB,aAAcvE,EAChBA,EAAWwE,UAAW,EAInBxE,EAAWyE,MACdzE,EAAWyE,IAAM,WACf,MAAMC,MAAM,qCAAwCzE,EAAO,OAGjE,GACF,EAiIE0E,YA/HkB,SAACC,EAAeC,GAClC,IAAM/G,EAAM,CAAA,EAENgH,EAAS,SAACnB,GACdA,EAAI9F,SAAQ,SAAA+E,GACV9E,EAAI8E,IAAS,CACf,KAKF,OAFAjG,EAAQiI,GAAiBE,EAAOF,GAAiBE,EAAOvB,OAAOqB,GAAeG,MAAMF,IAE7E/G,CACT,EAoHEkH,YAjMkB,SAAA7I,GAClB,OAAOA,EAAIG,cAAc8F,QAAQ,yBAC/B,SAAkB6C,EAAGC,EAAIC,GACvB,OAAOD,EAAG1E,cAAgB2E,CAC5B,GAEJ,EA4LEC,KAnHW,aAoHXC,eAlHqB,SAACzC,EAAO0C,GAE7B,OADA1C,GAASA,EACF2C,OAAOC,SAAS5C,GAASA,EAAQ0C,CAC1C,EAgHE5G,QAAAA,EACAM,OAAQJ,EACRK,iBAAAA,EACAqB,SAAAA,EACAmF,eAxGqB,WAGrB,IAHqE,IAA/CC,EAAIhK,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAG,GAAIiK,EAAQjK,UAAAwC,OAAAxC,QAAAyC,IAAAzC,UAAAyC,GAAAzC,UAAG4E,GAAAA,EAASC,YACjDpE,EAAM,GACH+B,EAAUyH,EAAVzH,OACAwH,KACLvJ,GAAOwJ,EAASC,KAAKC,SAAW3H,EAAO,GAGzC,OAAO/B,CACT,EAiGE2J,oBAxFF,SAA6B5J,GAC3B,SAAUA,GAASc,EAAWd,EAAM8E,SAAyC,aAA9B9E,EAAMmB,OAAOC,cAA+BpB,EAAMmB,OAAOE,UAC1G,EAuFEwI,aArFmB,SAACjI,GACpB,IAAMkI,EAAQ,IAAIpJ,MAAM,IA2BxB,OAzBc,SAARqJ,EAASC,EAAQnI,GAErB,GAAIb,EAASgJ,GAAS,CACpB,GAAIF,EAAMvC,QAAQyC,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxBF,EAAMjI,GAAKmI,EACX,IAAMC,EAASxJ,EAAQuJ,GAAU,GAAK,CAAA,EAStC,OAPArI,EAAQqI,GAAQ,SAACtD,EAAOtE,GACtB,IAAM8H,EAAeH,EAAMrD,EAAO7E,EAAI,IACrClB,EAAYuJ,KAAkBD,EAAO7H,GAAO8H,EAC/C,IAEAJ,EAAMjI,QAAKI,EAEJgI,CACT,CACF,CAEA,OAAOD,EAGFD,CAAMnI,EAAK,EACpB,EAyDE2C,UAAAA,EACA4F,WAtDiB,SAACnK,GAAK,OACvBA,IAAUgB,EAAShB,IAAUc,EAAWd,KAAWc,EAAWd,EAAMoK,OAAStJ,EAAWd,EAAK,MAAO,GC7oBtG,SAASqK,EAAWC,EAASC,EAAMC,EAAQC,EAASC,GAClDlC,MAAMtI,KAAKsF,MAEPgD,MAAMmC,kBACRnC,MAAMmC,kBAAkBnF,KAAMA,KAAKd,aAEnCc,KAAKsE,OAAS,IAAItB,OAASsB,MAG7BtE,KAAK8E,QAAUA,EACf9E,KAAKzB,KAAO,aACZwG,IAAS/E,KAAK+E,KAAOA,GACrBC,IAAWhF,KAAKgF,OAASA,GACzBC,IAAYjF,KAAKiF,QAAUA,GAC3BC,IAAalF,KAAKkF,SAAWA,EAC/B,CAEAE,EAAMtE,SAAS+D,EAAY7B,MAAO,CAChCqC,OAAQ,WACN,MAAO,CAELP,QAAS9E,KAAK8E,QACdvG,KAAMyB,KAAKzB,KAEX+G,YAAatF,KAAKsF,YAClBC,OAAQvF,KAAKuF,OAEbC,SAAUxF,KAAKwF,SACfC,WAAYzF,KAAKyF,WACjBC,aAAc1F,KAAK0F,aACnBpB,MAAOtE,KAAKsE,MAEZU,OAAQI,EAAMf,aAAarE,KAAKgF,QAChCD,KAAM/E,KAAK+E,KACXY,OAAQ3F,KAAKkF,UAAYlF,KAAKkF,SAASS,OAAS3F,KAAKkF,SAASS,OAAS,KAE3E,IAGF,IAAMvL,EAAYyK,EAAWzK,UACvB+D,GAAc,CAAA,EAEpB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEAhC,SAAQ,SAAA4I,GACR5G,GAAY4G,GAAQ,CAAC7D,MAAO6D,EAC9B,IAEA5K,OAAOsE,iBAAiBoG,EAAY1G,IACpChE,OAAO8G,eAAe7G,EAAW,eAAgB,CAAC8G,OAAO,IAGzD2D,EAAWe,KAAO,SAACC,EAAOd,EAAMC,EAAQC,EAASC,EAAUY,GACzD,IAAMC,EAAa5L,OAAOI,OAAOH,GAgBjC,OAdAgL,EAAMhE,aAAayE,EAAOE,GAAY,SAAgB3J,GACpD,OAAOA,IAAQ4G,MAAM5I,SACtB,IAAE,SAAA2D,GACD,MAAgB,iBAATA,CACT,IAEA8G,EAAWnK,KAAKqL,EAAYF,EAAMf,QAASC,EAAMC,EAAQC,EAASC,GAElEa,EAAWC,MAAQH,EAEnBE,EAAWxH,KAAOsH,EAAMtH,KAExBuH,GAAe3L,OAAOgH,OAAO4E,EAAYD,GAElCC,CACT,ECnFA,SAASE,GAAYzL,GACnB,OAAO4K,EAAM3J,cAAcjB,IAAU4K,EAAMnK,QAAQT,EACrD,CASA,SAAS0L,GAAetJ,GACtB,OAAOwI,EAAM1D,SAAS9E,EAAK,MAAQA,EAAIjC,MAAM,GAAI,GAAKiC,CACxD,CAWA,SAASuJ,GAAUC,EAAMxJ,EAAKyJ,GAC5B,OAAKD,EACEA,EAAKE,OAAO1J,GAAK2J,KAAI,SAAcC,EAAOnK,GAG/C,OADAmK,EAAQN,GAAeM,IACfH,GAAQhK,EAAI,IAAMmK,EAAQ,IAAMA,CACzC,IAAEC,KAAKJ,EAAO,IAAM,IALHzJ,CAMpB,CAaA,IAAM8J,GAAatB,EAAMhE,aAAagE,EAAO,CAAE,EAAE,MAAM,SAAgBrH,GACrE,MAAO,WAAW4I,KAAK5I,EACzB,IAyBA,SAAS6I,GAAWxK,EAAKyK,EAAUC,GACjC,IAAK1B,EAAM5J,SAASY,GAClB,MAAM,IAAI2K,UAAU,4BAItBF,EAAWA,GAAY,IAAyBxH,SAYhD,IAAM2H,GATNF,EAAU1B,EAAMhE,aAAa0F,EAAS,CACpCE,YAAY,EACZX,MAAM,EACNY,SAAS,IACR,GAAO,SAAiBC,EAAQ1C,GAEjC,OAAQY,EAAMjK,YAAYqJ,EAAO0C,GACnC,KAE2BF,WAErBG,EAAUL,EAAQK,SAAWC,EAC7Bf,EAAOS,EAAQT,KACfY,EAAUH,EAAQG,QAElBI,GADQP,EAAQQ,MAAwB,oBAATA,MAAwBA,OACpClC,EAAMhB,oBAAoByC,GAEnD,IAAKzB,EAAM9J,WAAW6L,GACpB,MAAM,IAAIJ,UAAU,8BAGtB,SAASQ,EAAarG,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIkE,EAAMtJ,OAAOoF,GACf,OAAOA,EAAMsG,cAGf,IAAKH,GAAWjC,EAAMpJ,OAAOkF,GAC3B,MAAM,IAAI2D,EAAW,gDAGvB,OAAIO,EAAMhK,cAAc8F,IAAUkE,EAAM1H,aAAawD,GAC5CmG,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACpG,IAAUuG,OAAO7B,KAAK1E,GAG1EA,CACT,CAYA,SAASkG,EAAelG,EAAOtE,EAAKwJ,GAClC,IAAInE,EAAMf,EAEV,GAAIA,IAAUkF,GAAyB,WAAjBpL,EAAOkG,GAC3B,GAAIkE,EAAM1D,SAAS9E,EAAK,MAEtBA,EAAMoK,EAAapK,EAAMA,EAAIjC,MAAM,GAAI,GAEvCuG,EAAQwG,KAAKC,UAAUzG,QAClB,GACJkE,EAAMnK,QAAQiG,IAnGvB,SAAqBe,GACnB,OAAOmD,EAAMnK,QAAQgH,KAASA,EAAI2F,KAAK3B,GACzC,CAiGiC4B,CAAY3G,KACnCkE,EAAMnJ,WAAWiF,IAAUkE,EAAM1D,SAAS9E,EAAK,SAAWqF,EAAMmD,EAAMpD,QAAQd,IAYhF,OATAtE,EAAMsJ,GAAetJ,GAErBqF,EAAI9F,SAAQ,SAAc2L,EAAIC,IAC1B3C,EAAMjK,YAAY2M,IAAc,OAAPA,GAAgBjB,EAASvH,QAEtC,IAAZ2H,EAAmBd,GAAU,CAACvJ,GAAMmL,EAAO1B,GAAqB,OAAZY,EAAmBrK,EAAMA,EAAM,KACnF2K,EAAaO,GAEjB,KACO,EAIX,QAAI7B,GAAY/E,KAIhB2F,EAASvH,OAAO6G,GAAUC,EAAMxJ,EAAKyJ,GAAOkB,EAAarG,KAElD,EACT,CAEA,IAAMoD,EAAQ,GAER0D,EAAiB7N,OAAOgH,OAAOuF,GAAY,CAC/CU,eAAAA,EACAG,aAAAA,EACAtB,YAAAA,KAyBF,IAAKb,EAAM5J,SAASY,GAClB,MAAM,IAAI2K,UAAU,0BAKtB,OA5BA,SAASkB,EAAM/G,EAAOkF,GACpB,IAAIhB,EAAMjK,YAAY+F,GAAtB,CAEA,IAA8B,IAA1BoD,EAAMvC,QAAQb,GAChB,MAAM8B,MAAM,kCAAoCoD,EAAKK,KAAK,MAG5DnC,EAAM5B,KAAKxB,GAEXkE,EAAMjJ,QAAQ+E,GAAO,SAAc4G,EAAIlL,IAKtB,OAJEwI,EAAMjK,YAAY2M,IAAc,OAAPA,IAAgBX,EAAQzM,KAChEmM,EAAUiB,EAAI1C,EAAM/J,SAASuB,GAAOA,EAAI6D,OAAS7D,EAAKwJ,EAAM4B,KAI5DC,EAAMH,EAAI1B,EAAOA,EAAKE,OAAO1J,GAAO,CAACA,GAEzC,IAEA0H,EAAM4D,KAlBwB,CAmBhC,CAMAD,CAAM7L,GAECyK,CACT,CC5MA,SAASsB,GAAO1N,GACd,IAAM2N,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOC,mBAAmB5N,GAAKiG,QAAQ,oBAAoB,SAAkB4H,GAC3E,OAAOF,EAAQE,EACjB,GACF,CAUA,SAASC,GAAqBC,EAAQ1B,GACpC9G,KAAKyI,OAAS,GAEdD,GAAU5B,GAAW4B,EAAQxI,KAAM8G,EACrC,CAEA,IAAM1M,GAAYmO,GAAqBnO,UC5BvC,SAAS+N,GAAOzM,GACd,OAAO2M,mBAAmB3M,GACxBgF,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASgI,GAASC,EAAKH,EAAQ1B,GAE5C,IAAK0B,EACH,OAAOG,EAGT,IAIIC,EAJEC,EAAU/B,GAAWA,EAAQqB,QAAUA,GAEvCW,EAAchC,GAAWA,EAAQiC,UAYvC,GAPEH,EADEE,EACiBA,EAAYN,EAAQ1B,GAEpB1B,EAAMlJ,kBAAkBsM,GACzCA,EAAOtO,WACP,IAAIqO,GAAqBC,EAAQ1B,GAAS5M,SAAS2O,GAGjC,CACpB,IAAMG,EAAgBL,EAAI5G,QAAQ,MAEX,IAAnBiH,IACFL,EAAMA,EAAIhO,MAAM,EAAGqO,IAErBL,KAA8B,IAAtBA,EAAI5G,QAAQ,KAAc,IAAM,KAAO6G,CACjD,CAEA,OAAOD,CACT,CDnBAvO,GAAUkF,OAAS,SAAgBf,EAAM2C,GACvClB,KAAKyI,OAAO/F,KAAK,CAACnE,EAAM2C,GAC1B,EAEA9G,GAAUF,SAAW,SAAkB+O,GACrC,IAAMJ,EAAUI,EAAU,SAAS/H,GACjC,OAAO+H,EAAQvO,KAAKsF,KAAMkB,EAAOiH,GAClC,EAAGA,GAEJ,OAAOnI,KAAKyI,OAAOlC,KAAI,SAAclE,GACnC,OAAOwG,EAAQxG,EAAK,IAAM,IAAMwG,EAAQxG,EAAK,GAC9C,GAAE,IAAIoE,KAAK,IACd,EErDkC,ICkB/ByC,GDkDHC,GAlEwB,WACtB,SAAAC,IAAcC,OAAAD,GACZpJ,KAAKsJ,SAAW,EAClB,CA4DC,OA1DDC,EAAAH,EAAA,CAAA,CAAAxM,IAAA,MAAAsE,MAQA,SAAIsI,EAAWC,EAAU3C,GAOvB,OANA9G,KAAKsJ,SAAS5G,KAAK,CACjB8G,UAAAA,EACAC,SAAAA,EACAC,cAAa5C,GAAUA,EAAQ4C,YAC/BC,QAAS7C,EAAUA,EAAQ6C,QAAU,OAEhC3J,KAAKsJ,SAAS9M,OAAS,CAChC,GAEA,CAAAI,IAAA,QAAAsE,MAOA,SAAM0I,GACA5J,KAAKsJ,SAASM,KAChB5J,KAAKsJ,SAASM,GAAM,KAExB,GAEA,CAAAhN,IAAA,QAAAsE,MAKA,WACMlB,KAAKsJ,WACPtJ,KAAKsJ,SAAW,GAEpB,GAEA,CAAA1M,IAAA,UAAAsE,MAUA,SAAQrH,GACNuL,EAAMjJ,QAAQ6D,KAAKsJ,UAAU,SAAwBO,GACzC,OAANA,GACFhQ,EAAGgQ,EAEP,GACF,KAACT,CAAA,CA/DqB,GEFTU,GAAA,CACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDRC,GAAA,CACbC,WAAW,EACXC,QAAS,CACPC,gBCJsC,oBAApBA,gBAAkCA,gBAAkB9B,GDKtElJ,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDiI,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDgD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SFXhDC,GAAkC,oBAAXlN,QAA8C,oBAAbmN,SAmBxDC,IACHvB,GAEuB,oBAAdwB,WAA6BA,UAAUxB,QADxCqB,IAAiB,CAAC,cAAe,eAAgB,MAAMxI,QAAQmH,IAAW,GAY/EyB,GAE2B,oBAAtBC,mBAEPxN,gBAAgBwN,mBACc,mBAAvBxN,KAAKyN,cMnChBC,GAAAA,EAAAA,EACK1F,CAAAA,+GACA2F,IC2CL,SAASC,GAAenE,GACtB,SAASoE,EAAU7E,EAAMlF,EAAOuD,EAAQsD,GACtC,IAAIxJ,EAAO6H,EAAK2B,KAEhB,GAAa,cAATxJ,EAAsB,OAAO,EAEjC,IAAM2M,EAAerH,OAAOC,UAAUvF,GAChC4M,EAASpD,GAAS3B,EAAK5J,OAG7B,OAFA+B,GAAQA,GAAQ6G,EAAMnK,QAAQwJ,GAAUA,EAAOjI,OAAS+B,EAEpD4M,GACE/F,EAAMzC,WAAW8B,EAAQlG,GAC3BkG,EAAOlG,GAAQ,CAACkG,EAAOlG,GAAO2C,GAE9BuD,EAAOlG,GAAQ2C,GAGTgK,IAGLzG,EAAOlG,IAAU6G,EAAM5J,SAASiJ,EAAOlG,MAC1CkG,EAAOlG,GAAQ,IAGF0M,EAAU7E,EAAMlF,EAAOuD,EAAOlG,GAAOwJ,IAEtC3C,EAAMnK,QAAQwJ,EAAOlG,MACjCkG,EAAOlG,GA/Cb,SAAuB0D,GACrB,IAEI5F,EAEAO,EAJER,EAAM,CAAA,EACNS,EAAO1C,OAAO0C,KAAKoF,GAEnBlF,EAAMF,EAAKL,OAEjB,IAAKH,EAAI,EAAGA,EAAIU,EAAKV,IAEnBD,EADAQ,EAAMC,EAAKR,IACA4F,EAAIrF,GAEjB,OAAOR,CACT,CAoCqBgP,CAAc3G,EAAOlG,MAG9B2M,EACV,CAEA,GAAI9F,EAAMjG,WAAW0H,IAAazB,EAAM9J,WAAWuL,EAASwE,SAAU,CACpE,IAAMjP,EAAM,CAAA,EAMZ,OAJAgJ,EAAMlD,aAAa2E,GAAU,SAACtI,EAAM2C,GAClC+J,EA1EN,SAAuB1M,GAKrB,OAAO6G,EAAM9C,SAAS,gBAAiB/D,GAAMgI,KAAI,SAAA+B,GAC/C,MAAoB,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,EACpD,GACF,CAkEgBgD,CAAc/M,GAAO2C,EAAO9E,EAAK,EAC7C,IAEOA,CACT,CAEA,OAAO,IACT,CCzDA,IAAMmP,GAAW,CAEfC,aAAc1B,GAEd2B,QAAS,CAAC,MAAO,QAEjBC,iBAAkB,CAAC,SAA0BC,EAAMC,GACjD,IA8BI3P,EA9BE4P,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY9J,QAAQ,qBAAuB,EAChEiK,EAAkB5G,EAAM5J,SAASmQ,GAQvC,GANIK,GAAmB5G,EAAMxH,WAAW+N,KACtCA,EAAO,IAAItM,SAASsM,IAGHvG,EAAMjG,WAAWwM,GAGlC,OAAOI,EAAqBrE,KAAKC,UAAUqD,GAAeW,IAASA,EAGrE,GAAIvG,EAAMhK,cAAcuQ,IACtBvG,EAAMnG,SAAS0M,IACfvG,EAAMxF,SAAS+L,IACfvG,EAAMrJ,OAAO4P,IACbvG,EAAMpJ,OAAO2P,GAEb,OAAOA,EAET,GAAIvG,EAAM7F,kBAAkBoM,GAC1B,OAAOA,EAAKjM,OAEd,GAAI0F,EAAMlJ,kBAAkByP,GAE1B,OADAC,EAAQK,eAAe,mDAAmD,GACnEN,EAAKzR,WAKd,GAAI8R,EAAiB,CACnB,GAAIH,EAAY9J,QAAQ,sCAAwC,EAC9D,OCtEO,SAA0B4J,EAAM7E,GAC7C,OAAOF,GAAW+E,EAAM,IAAIZ,GAASX,QAAQC,gBAAmBlQ,OAAOgH,OAAO,CAC5EgG,QAAS,SAASjG,EAAOtE,EAAKwJ,EAAM8F,GAClC,OAAInB,GAASoB,QAAU/G,EAAMnG,SAASiC,IACpClB,KAAKV,OAAO1C,EAAKsE,EAAMhH,SAAS,YACzB,GAGFgS,EAAQ9E,eAAerN,MAAMiG,KAAMhG,UAC5C,GACC8M,GACL,CD2DesF,CAAiBT,EAAM3L,KAAKqM,gBAAgBnS,WAGrD,IAAK+B,EAAamJ,EAAMnJ,WAAW0P,KAAUE,EAAY9J,QAAQ,wBAA0B,EAAG,CAC5F,IAAMuK,EAAYtM,KAAKuM,KAAOvM,KAAKuM,IAAIlN,SAEvC,OAAOuH,GACL3K,EAAa,CAAC,UAAW0P,GAAQA,EACjCW,GAAa,IAAIA,EACjBtM,KAAKqM,eAET,CACF,CAEA,OAAIL,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GAvEjD,SAAyBO,EAAUC,EAAQxD,GACzC,GAAI7D,EAAM/J,SAASmR,GACjB,IAEE,OADCC,GAAU/E,KAAKgF,OAAOF,GAChBpH,EAAM3E,KAAK+L,EAKpB,CAJE,MAAOG,GACP,GAAe,gBAAXA,EAAEpO,KACJ,MAAMoO,CAEV,CAGF,OAAQ1D,GAAWvB,KAAKC,WAAW6E,EACrC,CA2DaI,CAAgBjB,IAGlBA,CACT,GAEAkB,kBAAmB,CAAC,SAA2BlB,GAC7C,IAAMH,EAAexL,KAAKwL,cAAgBD,GAASC,aAC7CxB,EAAoBwB,GAAgBA,EAAaxB,kBACjD8C,EAAsC,SAAtB9M,KAAK+M,aAE3B,GAAIpB,GAAQvG,EAAM/J,SAASsQ,KAAW3B,IAAsBhK,KAAK+M,cAAiBD,GAAgB,CAChG,IACME,IADoBxB,GAAgBA,EAAazB,oBACP+C,EAEhD,IACE,OAAOpF,KAAKgF,MAAMf,EAQpB,CAPE,MAAOgB,GACP,GAAIK,EAAmB,CACrB,GAAe,gBAAXL,EAAEpO,KACJ,MAAMsG,EAAWe,KAAK+G,EAAG9H,EAAWoI,iBAAkBjN,KAAM,KAAMA,KAAKkF,UAEzE,MAAMyH,CACR,CACF,CACF,CAEA,OAAOhB,CACT,GAMAuB,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBf,IAAK,CACHlN,SAAU0L,GAASX,QAAQ/K,SAC3BiI,KAAMyD,GAASX,QAAQ9C,MAGzBiG,eAAgB,SAAwB5H,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAEDiG,QAAS,CACP4B,OAAQ,CACNC,OAAU,oCACV,oBAAgBhR,KAKtB2I,EAAMjJ,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAU,SAACuR,GAChEnC,GAASK,QAAQ8B,GAAU,EAC7B,IAEA,IAAAC,GAAepC,GErJTqC,GAAoBxI,EAAMnC,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtB4K,GAAalS,OAAO,aAE1B,SAASmS,GAAgBC,GACvB,OAAOA,GAAUlM,OAAOkM,GAAQtN,OAAO7F,aACzC,CAEA,SAASoT,GAAe9M,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFkE,EAAMnK,QAAQiG,GAASA,EAAMqF,IAAIyH,IAAkBnM,OAAOX,EACnE,CAgBA,SAAS+M,GAAiBzQ,EAAS0D,EAAO6M,EAAQxM,EAAQ2M,GACxD,OAAI9I,EAAM9J,WAAWiG,GACZA,EAAO7G,KAAKsF,KAAMkB,EAAO6M,IAG9BG,IACFhN,EAAQ6M,GAGL3I,EAAM/J,SAAS6F,GAEhBkE,EAAM/J,SAASkG,IACiB,IAA3BL,EAAMa,QAAQR,GAGnB6D,EAAMpH,SAASuD,GACVA,EAAOoF,KAAKzF,QADrB,OANA,EASF,CAoBC,IAEKiN,GAAY,SAAAC,EAAAC,GAChB,SAAAF,EAAYvC,GAASvC,OAAA8E,GACnBvC,GAAW5L,KAAK+C,IAAI6I,EACtB,CA2MC,OA3MArC,EAAA4E,EAAA,CAAA,CAAAvR,IAAA,MAAAsE,MAED,SAAI6M,EAAQO,EAAgBC,GAC1B,IAAMnR,EAAO4C,KAEb,SAASwO,EAAUC,EAAQC,EAASC,GAClC,IAAMC,EAAUd,GAAgBY,GAEhC,IAAKE,EACH,MAAM,IAAI5L,MAAM,0CAGlB,IAAMpG,EAAMwI,EAAMpI,QAAQI,EAAMwR,KAE5BhS,QAAqBH,IAAdW,EAAKR,KAAmC,IAAb+R,QAAmClS,IAAbkS,IAAwC,IAAdvR,EAAKR,MACzFQ,EAAKR,GAAO8R,GAAWV,GAAeS,GAE1C,CAEA,IDpEWI,EAETjS,EACAlB,EACAW,EAHEyS,ECmEEC,EAAa,SAACnD,EAAS+C,GAAQ,OACnCvJ,EAAMjJ,QAAQyP,GAAS,SAAC6C,EAAQC,GAAO,OAAKF,EAAUC,EAAQC,EAASC,KAAU,EAUnF,OARIvJ,EAAM3J,cAAcsS,IAAWA,aAAkB/N,KAAKd,YACxD6P,EAAWhB,EAAQO,GACXlJ,EAAM/J,SAAS0S,KAAYA,EAASA,EAAOtN,UArEtB,iCAAiCkG,KAqEmBoH,EArEVtN,QAsEvEsO,GDzEED,EAAS,CAAA,GADFD,EC0Eed,IDpEdc,EAAWxL,MAAM,MAAMlH,SAAQ,SAAgB6S,GAC3D3S,EAAI2S,EAAKjN,QAAQ,KACjBnF,EAAMoS,EAAKC,UAAU,EAAG5S,GAAGoE,OAAO7F,cAClCc,EAAMsT,EAAKC,UAAU5S,EAAI,GAAGoE,QAEvB7D,GAAQkS,EAAOlS,IAAQgR,GAAkBhR,KAIlC,eAARA,EACEkS,EAAOlS,GACTkS,EAAOlS,GAAK8F,KAAKhH,GAEjBoT,EAAOlS,GAAO,CAAClB,GAGjBoT,EAAOlS,GAAOkS,EAAOlS,GAAOkS,EAAOlS,GAAO,KAAOlB,EAAMA,EAE3D,IAEOoT,GCgD8BR,GAEvB,MAAVP,GAAkBS,EAAUF,EAAgBP,EAAQQ,GAG/CvO,IACT,GAAC,CAAApD,IAAA,MAAAsE,MAED,SAAI6M,EAAQtB,GAGV,GAFAsB,EAASD,GAAgBC,GAEb,CACV,IAAMnR,EAAMwI,EAAMpI,QAAQgD,KAAM+N,GAEhC,GAAInR,EAAK,CACP,IAAMsE,EAAQlB,KAAKpD,GAEnB,IAAK6P,EACH,OAAOvL,EAGT,IAAe,IAAXuL,EACF,OAxGV,SAAqBhS,GAKnB,IAJA,IAEI6N,EAFE4G,EAAS/U,OAAOI,OAAO,MACvB4U,EAAW,mCAGT7G,EAAQ6G,EAAS1M,KAAKhI,IAC5ByU,EAAO5G,EAAM,IAAMA,EAAM,GAG3B,OAAO4G,CACT,CA8FiBE,CAAYlO,GAGrB,GAAIkE,EAAM9J,WAAWmR,GACnB,OAAOA,EAAO/R,KAAKsF,KAAMkB,EAAOtE,GAGlC,GAAIwI,EAAMpH,SAASyO,GACjB,OAAOA,EAAOhK,KAAKvB,GAGrB,MAAM,IAAI6F,UAAU,yCACtB,CACF,CACF,GAAC,CAAAnK,IAAA,MAAAsE,MAED,SAAI6M,EAAQsB,GAGV,GAFAtB,EAASD,GAAgBC,GAEb,CACV,IAAMnR,EAAMwI,EAAMpI,QAAQgD,KAAM+N,GAEhC,SAAUnR,QAAqBH,IAAduD,KAAKpD,IAAwByS,IAAWpB,GAAiBjO,EAAMA,KAAKpD,GAAMA,EAAKyS,GAClG,CAEA,OAAO,CACT,GAAC,CAAAzS,IAAA,SAAAsE,MAED,SAAO6M,EAAQsB,GACb,IAAMjS,EAAO4C,KACTsP,GAAU,EAEd,SAASC,EAAab,GAGpB,GAFAA,EAAUZ,GAAgBY,GAEb,CACX,IAAM9R,EAAMwI,EAAMpI,QAAQI,EAAMsR,IAE5B9R,GAASyS,IAAWpB,GAAiB7Q,EAAMA,EAAKR,GAAMA,EAAKyS,YACtDjS,EAAKR,GAEZ0S,GAAU,EAEd,CACF,CAQA,OANIlK,EAAMnK,QAAQ8S,GAChBA,EAAO5R,QAAQoT,GAEfA,EAAaxB,GAGRuB,CACT,GAAC,CAAA1S,IAAA,QAAAsE,MAED,SAAMmO,GAKJ,IAJA,IAAMxS,EAAO1C,OAAO0C,KAAKmD,MACrB3D,EAAIQ,EAAKL,OACT8S,GAAU,EAEPjT,KAAK,CACV,IAAMO,EAAMC,EAAKR,GACbgT,IAAWpB,GAAiBjO,EAAMA,KAAKpD,GAAMA,EAAKyS,GAAS,YACtDrP,KAAKpD,GACZ0S,GAAU,EAEd,CAEA,OAAOA,CACT,GAAC,CAAA1S,IAAA,YAAAsE,MAED,SAAUsO,GACR,IAAMpS,EAAO4C,KACP4L,EAAU,CAAA,EAsBhB,OApBAxG,EAAMjJ,QAAQ6D,MAAM,SAACkB,EAAO6M,GAC1B,IAAMnR,EAAMwI,EAAMpI,QAAQ4O,EAASmC,GAEnC,GAAInR,EAGF,OAFAQ,EAAKR,GAAOoR,GAAe9M,eACpB9D,EAAK2Q,GAId,IAAM0B,EAAaD,EA1JzB,SAAsBzB,GACpB,OAAOA,EAAOtN,OACX7F,cAAc8F,QAAQ,mBAAmB,SAACgP,EAAGC,EAAMlV,GAClD,OAAOkV,EAAK7Q,cAAgBrE,CAC9B,GACJ,CAqJkCmV,CAAa7B,GAAUlM,OAAOkM,GAAQtN,OAE9DgP,IAAe1B,UACV3Q,EAAK2Q,GAGd3Q,EAAKqS,GAAczB,GAAe9M,GAElC0K,EAAQ6D,IAAc,CACxB,IAEOzP,IACT,GAAC,CAAApD,IAAA,SAAAsE,MAED,WAAmB,IAAA,IAAA2O,EAAAC,EAAA9V,UAAAwC,OAATuT,EAAO7U,IAAAA,MAAA4U,GAAA7S,EAAA,EAAAA,EAAA6S,EAAA7S,IAAP8S,EAAO9S,GAAAjD,UAAAiD,GACf,OAAO4S,EAAA7P,KAAKd,aAAYoH,OAAMvM,MAAA8V,EAAC,CAAA7P,MAAIsG,OAAKyJ,GAC1C,GAAC,CAAAnT,IAAA,SAAAsE,MAED,SAAO8O,GACL,IAAM5T,EAAMjC,OAAOI,OAAO,MAM1B,OAJA6K,EAAMjJ,QAAQ6D,MAAM,SAACkB,EAAO6M,GACjB,MAAT7M,IAA2B,IAAVA,IAAoB9E,EAAI2R,GAAUiC,GAAa5K,EAAMnK,QAAQiG,GAASA,EAAMuF,KAAK,MAAQvF,EAC5G,IAEO9E,CACT,GAAC,CAAAQ,IAEAjB,OAAOE,SAFPqF,MAED,WACE,OAAO/G,OAAOkR,QAAQrL,KAAKqF,UAAU1J,OAAOE,WAC9C,GAAC,CAAAe,IAAA,WAAAsE,MAED,WACE,OAAO/G,OAAOkR,QAAQrL,KAAKqF,UAAUkB,KAAI,SAAAhK,GAAA,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAe,OAAPwD,EAAA,GAAsB,KAAfA,EAAA,EAA2B,IAAE0G,KAAK,KAC5F,GAAC,CAAA7J,IAEIjB,OAAOC,YAFXsU,IAED,WACE,MAAO,cACT,IAAC,CAAA,CAAAtT,IAAA,OAAAsE,MAED,SAAY1G,GACV,OAAOA,aAAiBwF,KAAOxF,EAAQ,IAAIwF,KAAKxF,EAClD,GAAC,CAAAoC,IAAA,SAAAsE,MAED,SAAciP,GACqB,IAAjC,IAAMC,EAAW,IAAIpQ,KAAKmQ,GAAOE,EAAArW,UAAAwC,OADXuT,MAAO7U,MAAAmV,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPP,EAAOO,EAAAtW,GAAAA,UAAAsW,GAK7B,OAFAP,EAAQ5T,SAAQ,SAACsI,GAAM,OAAK2L,EAASrN,IAAI0B,MAElC2L,CACT,GAAC,CAAAxT,IAAA,WAAAsE,MAED,SAAgB6M,GACd,IAIMwC,GAJYvQ,KAAK6N,IAAe7N,KAAK6N,IAAc,CACvD0C,UAAW,CAAC,IAGcA,UACtBnW,EAAY4F,KAAK5F,UAEvB,SAASoW,EAAe9B,GACtB,IAAME,EAAUd,GAAgBY,GAE3B6B,EAAU3B,MAlNrB,SAAwBxS,EAAK2R,GAC3B,IAAM0C,EAAerL,EAAM9B,YAAY,IAAMyK,GAE7C,CAAC,MAAO,MAAO,OAAO5R,SAAQ,SAAAuU,GAC5BvW,OAAO8G,eAAe7E,EAAKsU,EAAaD,EAAc,CACpDvP,MAAO,SAASyP,EAAMC,EAAMC,GAC1B,OAAO7Q,KAAK0Q,GAAYhW,KAAKsF,KAAM+N,EAAQ4C,EAAMC,EAAMC,EACxD,EACDC,cAAc,GAElB,GACF,CAwMQC,CAAe3W,EAAWsU,GAC1B6B,EAAU3B,IAAW,EAEzB,CAIA,OAFAxJ,EAAMnK,QAAQ8S,GAAUA,EAAO5R,QAAQqU,GAAkBA,EAAezC,GAEjE/N,IACT,KAACmO,CAAA,CA9Me,GAiNlBA,GAAa6C,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAG/FhS,EAACf,kBAAkBkQ,GAAa/T,WAAW,SAAAoG,EAAU5D,GAAQ,IAAhBsE,EAAKV,EAALU,MAC5C+P,EAASrU,EAAI,GAAGkC,cAAgBlC,EAAIjC,MAAM,GAC9C,MAAO,CACLuV,IAAK,WAAA,OAAMhP,CAAK,EAChB6B,IAAG,SAACmO,GACFlR,KAAKiR,GAAUC,CACjB,EAEJ,IAEA9L,EAAMxC,cAAcuL,IAEpB,IAAAgD,GAAehD,GC3RA,SAASiD,GAAcC,EAAKnM,GACzC,IAAMF,EAAShF,MAAQuL,GACjB/N,EAAU0H,GAAYF,EACtB4G,EAAUuC,GAAavI,KAAKpI,EAAQoO,SACtCD,EAAOnO,EAAQmO,KAQnB,OANAvG,EAAMjJ,QAAQkV,GAAK,SAAmBxX,GACpC8R,EAAO9R,EAAGa,KAAKsK,EAAQ2G,EAAMC,EAAQ0F,YAAapM,EAAWA,EAASS,YAASlJ,EACjF,IAEAmP,EAAQ0F,YAED3F,CACT,CCzBe,SAAS4F,GAASrQ,GAC/B,SAAUA,IAASA,EAAMsQ,WAC3B,CCUA,SAASC,GAAc3M,EAASE,EAAQC,GAEtCJ,EAAWnK,KAAKsF,KAAiB,MAAX8E,EAAkB,WAAaA,EAASD,EAAW6M,aAAc1M,EAAQC,GAC/FjF,KAAKzB,KAAO,eACd,CAEA6G,EAAMtE,SAAS2Q,GAAe5M,EAAY,CACxC2M,YAAY,IClBCzG,IAAAA,GAAAA,GAASN,sBAGtB,CACEkH,MAAKA,SAACpT,EAAM2C,EAAO0Q,EAASxL,EAAMyL,EAAQC,GACxC,IAAMC,EAAS,CAACxT,EAAO,IAAM8J,mBAAmBnH,IAEhDkE,EAAM7J,SAASqW,IAAYG,EAAOrP,KAAK,WAAa,IAAIsP,KAAKJ,GAASK,eAEtE7M,EAAM/J,SAAS+K,IAAS2L,EAAOrP,KAAK,QAAU0D,GAE9ChB,EAAM/J,SAASwW,IAAWE,EAAOrP,KAAK,UAAYmP,IAEvC,IAAXC,GAAmBC,EAAOrP,KAAK,UAE/B8H,SAASuH,OAASA,EAAOtL,KAAK,KAC/B,EAEDyL,KAAI,SAAC3T,GACH,IAAM+J,EAAQkC,SAASuH,OAAOzJ,MAAM,IAAI6J,OAAO,aAAe5T,EAAO,cACrE,OAAQ+J,EAAQ8J,mBAAmB9J,EAAM,IAAM,IAChD,EAED+J,OAAM,SAAC9T,GACLyB,KAAK2R,MAAMpT,EAAM,GAAIyT,KAAKM,MAAQ,MACpC,GAMF,CACEX,MAAKA,WAAK,EACVO,KAAI,WACF,OAAO,IACR,EACDG,OAAM,WAAI,GCxBC,SAASE,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8B7L,KDGP8L,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQ9R,QAAQ,SAAU,IAAM,IAAMgS,EAAYhS,QAAQ,OAAQ,IAClE8R,CACN,CFGWG,CAAYH,EAASC,GAEvBA,CACT,CGfe1H,IAAAA,GAAAA,GAASN,sBAIrB,WACC,IAEImI,EAFEC,EAAO,kBAAkBlM,KAAK+D,UAAUoI,WACxCC,EAAiBvI,SAASwI,cAAc,KAS9C,SAASC,EAAWtK,GAClB,IAAIuK,EAAOvK,EAWX,OATIkK,IAEFE,EAAeI,aAAa,OAAQD,GACpCA,EAAOH,EAAeG,MAGxBH,EAAeI,aAAa,OAAQD,GAG7B,CACLA,KAAMH,EAAeG,KACrBE,SAAUL,EAAeK,SAAWL,EAAeK,SAAS1S,QAAQ,KAAM,IAAM,GAChF2S,KAAMN,EAAeM,KACrBC,OAAQP,EAAeO,OAASP,EAAeO,OAAO5S,QAAQ,MAAO,IAAM,GAC3E6S,KAAMR,EAAeQ,KAAOR,EAAeQ,KAAK7S,QAAQ,KAAM,IAAM,GACpE8S,SAAUT,EAAeS,SACzBC,KAAMV,EAAeU,KACrBC,SAAiD,MAAtCX,EAAeW,SAASC,OAAO,GACxCZ,EAAeW,SACf,IAAMX,EAAeW,SAE3B,CAUA,OARAd,EAAYK,EAAW5V,OAAOuW,SAASV,MAQhC,SAAyBW,GAC9B,IAAM/E,EAAU1J,EAAM/J,SAASwY,GAAeZ,EAAWY,GAAcA,EACvE,OAAQ/E,EAAOsE,WAAaR,EAAUQ,UAClCtE,EAAOuE,OAAST,EAAUS,KAElC,CAlDC,GAsDQ,WACL,OAAO,GChDb,SAASS,GAAqBC,EAAUC,GACtC,IAAIC,EAAgB,EACdC,ECVR,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,IAIIE,EAJEC,EAAQ,IAAIpZ,MAAMiZ,GAClBI,EAAa,IAAIrZ,MAAMiZ,GACzBK,EAAO,EACPC,EAAO,EAKX,OAFAL,OAAc3X,IAAR2X,EAAoBA,EAAM,IAEzB,SAAcM,GACnB,IAAMpC,EAAMN,KAAKM,MAEXqC,EAAYJ,EAAWE,GAExBJ,IACHA,EAAgB/B,GAGlBgC,EAAME,GAAQE,EACdH,EAAWC,GAAQlC,EAKnB,IAHA,IAAIjW,EAAIoY,EACJG,EAAa,EAEVvY,IAAMmY,GACXI,GAAcN,EAAMjY,KACpBA,GAAQ8X,EASV,IANAK,GAAQA,EAAO,GAAKL,KAEPM,IACXA,GAAQA,EAAO,GAAKN,KAGlB7B,EAAM+B,EAAgBD,GAA1B,CAIA,IAAMS,EAASF,GAAarC,EAAMqC,EAElC,OAAOE,EAAS3Q,KAAK4Q,MAAmB,IAAbF,EAAoBC,QAAUpY,CAJzD,EAMJ,CDlCuBsY,CAAY,GAAI,KAErC,OAAO,SAAApI,GACL,IAAMqI,EAASrI,EAAEqI,OACXC,EAAQtI,EAAEuI,iBAAmBvI,EAAEsI,WAAQxY,EACvC0Y,EAAgBH,EAASf,EACzBmB,EAAOlB,EAAaiB,GAG1BlB,EAAgBe,EAEhB,IAAMrJ,EAAO,CACXqJ,OAAAA,EACAC,MAAAA,EACAI,SAAUJ,EAASD,EAASC,OAASxY,EACrC6X,MAAOa,EACPC,KAAMA,QAAc3Y,EACpB6Y,UAAWF,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAO3Y,EAChE8Y,MAAO5I,GAGThB,EAAKqI,EAAmB,WAAa,WAAY,EAEjDD,EAASpI,GAEb,CAEA,IExCM6J,GAAgB,CACpBC,KCLa,KDMbC,IFsCsD,oBAAnBC,gBAEG,SAAU3Q,GAChD,OAAO,IAAI4Q,SAAQ,SAA4BC,EAASC,GACtD,IAGIC,EAWAlK,IAdAmK,EAAchR,EAAO2G,KACnBsK,EAAiB9H,GAAavI,KAAKZ,EAAO4G,SAAS0F,YACpDvE,EAA+B/H,EAA/B+H,aAAcmJ,EAAiBlR,EAAjBkR,cAEnB,SAAS9T,IACH4C,EAAOmR,aACTnR,EAAOmR,YAAYC,YAAYL,GAG7B/Q,EAAOqR,QACTrR,EAAOqR,OAAOC,oBAAoB,QAASP,EAE/C,CAIA,GAAI3Q,EAAMjG,WAAW6W,GACnB,GAAIjL,GAASN,uBAAyBM,GAASJ,+BAC7CsL,EAAehK,gBAAe,QACzB,IAAwD,KAAnDJ,EAAcoK,EAAenK,kBAA6B,CAEpE,IAAAvP,EAA0BsP,EAAcA,EAAYxI,MAAM,KAAKkD,KAAI,SAAAC,GAAK,OAAIA,EAAM/F,MAAM,IAAEc,OAAOgV,SAAW,GAAExW,MAAAxD,oBAAvGzB,EAAIiF,EAAA,GAAKmP,EAAMnP,EAAApF,MAAA,GACtBsb,EAAehK,eAAe,CAACnR,GAAQ,uBAAqBwL,OAAAkQ,EAAKtH,IAAQzI,KAAK,MAChF,CAGF,IAAIxB,EAAU,IAAI0Q,eAGlB,GAAI3Q,EAAOyR,KAAM,CACf,IAAMC,EAAW1R,EAAOyR,KAAKC,UAAY,GACnCC,EAAW3R,EAAOyR,KAAKE,SAAWC,SAASvO,mBAAmBrD,EAAOyR,KAAKE,WAAa,GAC7FV,EAAelT,IAAI,gBAAiB,SAAW8T,KAAKH,EAAW,IAAMC,GACvE,CAEA,IAAMG,EAAWvE,GAAcvN,EAAOwN,QAASxN,EAAO2D,KAOtD,SAASoO,IACP,GAAK9R,EAAL,CAIA,IAAM+R,EAAkB7I,GAAavI,KACnC,0BAA2BX,GAAWA,EAAQgS,0BIpFvC,SAAgBpB,EAASC,EAAQ5Q,GAC9C,IAAMqI,EAAiBrI,EAASF,OAAOuI,eAClCrI,EAASS,QAAW4H,IAAkBA,EAAerI,EAASS,QAGjEmQ,EAAO,IAAIjR,EACT,mCAAqCK,EAASS,OAC9C,CAACd,EAAWqS,gBAAiBrS,EAAWoI,kBAAkB/I,KAAKiT,MAAMjS,EAASS,OAAS,KAAO,GAC9FT,EAASF,OACTE,EAASD,QACTC,IAPF2Q,EAAQ3Q,EAUZ,CJoFMkS,EAAO,SAAkBlW,GACvB2U,EAAQ3U,GACRkB,GACF,IAAG,SAAiBiV,GAClBvB,EAAOuB,GACPjV,GACD,GAfgB,CACfuJ,KAHoBoB,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxC9H,EAAQC,SAA/BD,EAAQqS,aAGR3R,OAAQV,EAAQU,OAChB4R,WAAYtS,EAAQsS,WACpB3L,QAASoL,EACThS,OAAAA,EACAC,QAAAA,IAYFA,EAAU,IAzBV,CA0BF,CAmEA,GArGAA,EAAQuS,KAAKxS,EAAO0I,OAAO5O,cAAe4J,GAASoO,EAAU9R,EAAOwD,OAAQxD,EAAOyS,mBAAmB,GAGtGxS,EAAQiI,QAAUlI,EAAOkI,QAiCrB,cAAejI,EAEjBA,EAAQ8R,UAAYA,EAGpB9R,EAAQyS,mBAAqB,WACtBzS,GAAkC,IAAvBA,EAAQ0S,aAQD,IAAnB1S,EAAQU,QAAkBV,EAAQ2S,aAAwD,IAAzC3S,EAAQ2S,YAAY7V,QAAQ,WAKjF8V,WAAWd,IAKf9R,EAAQ6S,QAAU,WACX7S,IAIL6Q,EAAO,IAAIjR,EAAW,kBAAmBA,EAAWkT,aAAc/S,EAAQC,IAG1EA,EAAU,OAIZA,EAAQ+S,QAAU,WAGhBlC,EAAO,IAAIjR,EAAW,gBAAiBA,EAAWoT,YAAajT,EAAQC,IAGvEA,EAAU,MAIZA,EAAQiT,UAAY,WAClB,IAAIC,EAAsBnT,EAAOkI,QAAU,cAAgBlI,EAAOkI,QAAU,cAAgB,mBACtF1B,EAAexG,EAAOwG,cAAgB1B,GACxC9E,EAAOmT,sBACTA,EAAsBnT,EAAOmT,qBAE/BrC,EAAO,IAAIjR,EACTsT,EACA3M,EAAavB,oBAAsBpF,EAAWuT,UAAYvT,EAAWkT,aACrE/S,EACAC,IAGFA,EAAU,MAMT8F,GAASN,wBACVyL,GAAiB9Q,EAAM9J,WAAW4a,KAAmBA,EAAgBA,EAAclR,IAE/EkR,IAAoC,IAAlBA,GAA2BmC,GAAgBvB,IAAY,CAE3E,IAAMwB,EAAYtT,EAAOoI,gBAAkBpI,EAAOmI,gBAAkBoL,GAAQrG,KAAKlN,EAAOmI,gBAEpFmL,GACFrC,EAAelT,IAAIiC,EAAOoI,eAAgBkL,EAE9C,MAIc7b,IAAhBuZ,GAA6BC,EAAehK,eAAe,MAGvD,qBAAsBhH,GACxBG,EAAMjJ,QAAQ8Z,EAAe5Q,UAAU,SAA0B3J,EAAKkB,GACpEqI,EAAQuT,iBAAiB5b,EAAKlB,EAChC,IAIG0J,EAAMjK,YAAY6J,EAAOyT,mBAC5BxT,EAAQwT,kBAAoBzT,EAAOyT,iBAIjC1L,GAAiC,SAAjBA,IAClB9H,EAAQ8H,aAAe/H,EAAO+H,cAIS,mBAA9B/H,EAAO0T,oBAChBzT,EAAQ0T,iBAAiB,WAAY7E,GAAqB9O,EAAO0T,oBAAoB,IAIhD,mBAA5B1T,EAAO4T,kBAAmC3T,EAAQ4T,QAC3D5T,EAAQ4T,OAAOF,iBAAiB,WAAY7E,GAAqB9O,EAAO4T,oBAGtE5T,EAAOmR,aAAenR,EAAOqR,UAG/BN,EAAa,SAAA+C,GACN7T,IAGL6Q,GAAQgD,GAAUA,EAAOhe,KAAO,IAAI2W,GAAc,KAAMzM,EAAQC,GAAW6T,GAC3E7T,EAAQ8T,QACR9T,EAAU,OAGZD,EAAOmR,aAAenR,EAAOmR,YAAY6C,UAAUjD,GAC/C/Q,EAAOqR,SACTrR,EAAOqR,OAAO4C,QAAUlD,IAAe/Q,EAAOqR,OAAOsC,iBAAiB,QAAS5C,KAInF,IKrPIzN,ELqPE8K,GKrPF9K,EAAQ,4BAA4B7F,KLqPTqU,KKpPjBxO,EAAM,IAAM,GLsPtB8K,IAAsD,IAA1CrI,GAAST,UAAUvI,QAAQqR,GACzC0C,EAAO,IAAIjR,EAAW,wBAA0BuO,EAAW,IAAKvO,EAAWqS,gBAAiBlS,IAM9FC,EAAQiU,KAAKlD,GAAe,KAC9B,GACF,GEzPKhX,EAAC7C,QAAQqZ,IAAe,SAAC3b,EAAIqH,GAChC,GAAIrH,EAAI,CACN,IACEM,OAAO8G,eAAepH,EAAI,OAAQ,CAACqH,MAAAA,GAEnC,CADA,MAAOyL,GACP,CAEFxS,OAAO8G,eAAepH,EAAI,cAAe,CAACqH,MAAAA,GAC5C,CACF,IAEA,IAAMiY,GAAe,SAACC,GAAM,MAAA9S,KAAAA,OAAU8S,EAAM,EAEtCC,GAAmB,SAAC5N,GAAO,OAAKrG,EAAM9J,WAAWmQ,IAAwB,OAAZA,IAAgC,IAAZA,CAAiB,EAEzF6N,GACD,SAACA,GASX,IANA,IACIC,EACA9N,EAFGjP,GAFP8c,EAAWlU,EAAMnK,QAAQqe,GAAYA,EAAW,CAACA,IAE1C9c,OAIDgd,EAAkB,CAAA,EAEfnd,EAAI,EAAGA,EAAIG,EAAQH,IAAK,CAE/B,IAAIuN,OAAE,EAIN,GAFA6B,EAHA8N,EAAgBD,EAASjd,IAKpBgd,GAAiBE,SAGJ9c,KAFhBgP,EAAU+J,IAAe5L,EAAK/H,OAAO0X,IAAgB3e,gBAGnD,MAAM,IAAIiK,EAAU,oBAAAyB,OAAqBsD,QAI7C,GAAI6B,EACF,MAGF+N,EAAgB5P,GAAM,IAAMvN,GAAKoP,CACnC,CAEA,IAAKA,EAAS,CAEZ,IAAMgO,EAAUtf,OAAOkR,QAAQmO,GAC5BjT,KAAI,SAAAhK,GAAA,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAEqN,EAAE7J,EAAA,GAAE2Z,EAAK3Z,EAAA,GAAA,MAAM,WAAAuG,OAAWsD,EAC9B8P,OAAU,IAAVA,EAAkB,sCAAwC,gCAAgC,IAO/F,MAAM,IAAI7U,EACR,yDALMrI,EACLid,EAAQjd,OAAS,EAAI,YAAcid,EAAQlT,IAAI4S,IAAc1S,KAAK,MAAQ,IAAM0S,GAAaM,EAAQ,IACtG,2BAIA,kBAEJ,CAEA,OAAOhO,CACR,EI1DH,SAASkO,GAA6B3U,GAKpC,GAJIA,EAAOmR,aACTnR,EAAOmR,YAAYyD,mBAGjB5U,EAAOqR,QAAUrR,EAAOqR,OAAO4C,QACjC,MAAM,IAAIxH,GAAc,KAAMzM,EAElC,CASe,SAAS6U,GAAgB7U,GAiBtC,OAhBA2U,GAA6B3U,GAE7BA,EAAO4G,QAAUuC,GAAavI,KAAKZ,EAAO4G,SAG1C5G,EAAO2G,KAAOyF,GAAc1W,KAC1BsK,EACAA,EAAO0G,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAAS3J,QAAQiD,EAAO0I,SAC1C1I,EAAO4G,QAAQK,eAAe,qCAAqC,GAGrDqN,GAAoBtU,EAAOyG,SAAWF,GAASE,QAExDA,CAAQzG,GAAQJ,MAAK,SAA6BM,GAYvD,OAXAyU,GAA6B3U,GAG7BE,EAASyG,KAAOyF,GAAc1W,KAC5BsK,EACAA,EAAO6H,kBACP3H,GAGFA,EAAS0G,QAAUuC,GAAavI,KAAKV,EAAS0G,SAEvC1G,CACT,IAAG,SAA4BkU,GAe7B,OAdK7H,GAAS6H,KACZO,GAA6B3U,GAGzBoU,GAAUA,EAAOlU,WACnBkU,EAAOlU,SAASyG,KAAOyF,GAAc1W,KACnCsK,EACAA,EAAO6H,kBACPuM,EAAOlU,UAETkU,EAAOlU,SAAS0G,QAAUuC,GAAavI,KAAKwT,EAAOlU,SAAS0G,WAIzDgK,QAAQE,OAAOsD,EACxB,GACF,CC3EA,IAAMU,GAAkB,SAACtf,GAAK,OAAKA,aAAiB2T,GAAYrD,EAAQtQ,CAAAA,EAAAA,GAAUA,CAAK,EAWxE,SAASuf,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,GACrB,IAAMjV,EAAS,CAAA,EAEf,SAASkV,EAAezV,EAAQD,EAAQvE,GACtC,OAAImF,EAAM3J,cAAcgJ,IAAWW,EAAM3J,cAAc+I,GAC9CY,EAAMtF,MAAMpF,KAAK,CAACuF,SAAAA,GAAWwE,EAAQD,GACnCY,EAAM3J,cAAc+I,GACtBY,EAAMtF,MAAM,CAAE,EAAE0E,GACdY,EAAMnK,QAAQuJ,GAChBA,EAAO7J,QAET6J,CACT,CAGA,SAAS2V,EAAoB7Z,EAAGC,EAAGN,GACjC,OAAKmF,EAAMjK,YAAYoF,GAEX6E,EAAMjK,YAAYmF,QAAvB,EACE4Z,OAAezd,EAAW6D,EAAGL,GAF7Bia,EAAe5Z,EAAGC,EAAGN,EAIhC,CAGA,SAASma,EAAiB9Z,EAAGC,GAC3B,IAAK6E,EAAMjK,YAAYoF,GACrB,OAAO2Z,OAAezd,EAAW8D,EAErC,CAGA,SAAS8Z,EAAiB/Z,EAAGC,GAC3B,OAAK6E,EAAMjK,YAAYoF,GAEX6E,EAAMjK,YAAYmF,QAAvB,EACE4Z,OAAezd,EAAW6D,GAF1B4Z,OAAezd,EAAW8D,EAIrC,CAGA,SAAS+Z,EAAgBha,EAAGC,EAAGxC,GAC7B,OAAIA,KAAQkc,EACHC,EAAe5Z,EAAGC,GAChBxC,KAAQic,EACVE,OAAezd,EAAW6D,QAD5B,CAGT,CAEA,IAAMia,EAAW,CACf5R,IAAKyR,EACL1M,OAAQ0M,EACRzO,KAAMyO,EACN5H,QAAS6H,EACT3O,iBAAkB2O,EAClBxN,kBAAmBwN,EACnB5C,iBAAkB4C,EAClBnN,QAASmN,EACTG,eAAgBH,EAChB5B,gBAAiB4B,EACjBnE,cAAemE,EACf5O,QAAS4O,EACTtN,aAAcsN,EACdlN,eAAgBkN,EAChBjN,eAAgBiN,EAChBzB,iBAAkByB,EAClB3B,mBAAoB2B,EACpBI,WAAYJ,EACZhN,iBAAkBgN,EAClB/M,cAAe+M,EACfK,eAAgBL,EAChBM,UAAWN,EACXO,UAAWP,EACXQ,WAAYR,EACZlE,YAAakE,EACbS,WAAYT,EACZU,iBAAkBV,EAClB9M,eAAgB+M,EAChB1O,QAAS,SAACtL,EAAGC,GAAC,OAAK4Z,EAAoBL,GAAgBxZ,GAAIwZ,GAAgBvZ,IAAI,EAAK,GAStF,OANA6E,EAAMjJ,QAAQhC,OAAO0C,KAAK1C,OAAOgH,OAAO,GAAI6Y,EAASC,KAAW,SAA4Blc,GAC1F,IAAM+B,EAAQya,EAASxc,IAASoc,EAC1Ba,EAAclb,EAAMka,EAAQjc,GAAOkc,EAAQlc,GAAOA,GACvDqH,EAAMjK,YAAY6f,IAAgBlb,IAAUwa,IAAqBtV,EAAOjH,GAAQid,EACnF,IAEOhW,CACT,CCzGO,IAAMiW,GAAU,QCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU/e,SAAQ,SAACrB,EAAMuB,GAC7E6e,GAAWpgB,GAAQ,SAAmBN,GACpC,OAAOQ,EAAOR,KAAUM,GAAQ,KAAOuB,EAAI,EAAI,KAAO,KAAOvB,EAEjE,IAEA,IAAMqgB,GAAqB,CAAA,EAWjBC,GAAC5P,aAAe,SAAsB6P,EAAWC,EAASxW,GAClE,SAASyW,EAAcC,EAAKC,GAC1B,MAAO,uCAAoDD,EAAM,IAAOC,GAAQ3W,EAAU,KAAOA,EAAU,GAC7G,CAGA,OAAO,SAAC5D,EAAOsa,EAAKE,GAClB,IAAkB,IAAdL,EACF,MAAM,IAAIxW,EACR0W,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEzW,EAAW8W,gBAef,OAXIL,IAAYH,GAAmBK,KACjCL,GAAmBK,IAAO,EAE1BI,QAAQC,KACNN,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAUna,EAAOsa,EAAKE,GAE7C,EAmCe,IAAAL,GAAA,CACbS,cAxBF,SAAuBhV,EAASiV,EAAQC,GACtC,GAAuB,WAAnBhhB,EAAO8L,GACT,MAAM,IAAIjC,EAAW,4BAA6BA,EAAWoX,sBAI/D,IAFA,IAAMpf,EAAO1C,OAAO0C,KAAKiK,GACrBzK,EAAIQ,EAAKL,OACNH,KAAM,GAAG,CACd,IAAMmf,EAAM3e,EAAKR,GACXgf,EAAYU,EAAOP,GACzB,GAAIH,EAAJ,CACE,IAAMna,EAAQ4F,EAAQ0U,GAChBtb,OAAmBzD,IAAVyE,GAAuBma,EAAUna,EAAOsa,EAAK1U,GAC5D,IAAe,IAAX5G,EACF,MAAM,IAAI2E,EAAW,UAAY2W,EAAM,YAActb,EAAQ2E,EAAWoX,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAInX,EAAW,kBAAoB2W,EAAK3W,EAAWqX,eAE7D,CACF,EAIEhB,WAAAA,IC9EIA,GAAaG,GAAUH,WASvBiB,GAAK,WACT,SAAAA,EAAYC,GAAgB/S,OAAA8S,GAC1Bnc,KAAKuL,SAAW6Q,EAChBpc,KAAKqc,aAAe,CAClBpX,QAAS,IAAImE,GACblE,SAAU,IAAIkE,GAElB,CAEA,MAAAkT,EA+JC,OA/JD/S,EAAA4S,EAAA,CAAA,CAAAvf,IAAA,UAAAsE,SAAAqb,IAAAC,MAQA,SAAAC,EAAcC,EAAa1X,GAAM,IAAA2X,EAAArY,EAAA,OAAAiY,IAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAA1a,MAAA,KAAA,EAAA,OAAA0a,EAAAC,KAAA,EAAAD,EAAA1a,KAAA,EAEhBnC,KAAK+c,SAASL,EAAa1X,GAAO,KAAA,EAAA,OAAA6X,EAAAG,OAAAH,SAAAA,EAAAI,MAAA,KAAA,EAgB9C,MAhB8CJ,EAAAC,KAAA,EAAAD,EAAAK,GAAAL,EAAA,MAAA,GAE3CA,EAAAK,cAAela,QAGjBA,MAAMmC,kBAAoBnC,MAAMmC,kBAAkBwX,EAAQ,CAAA,GAAOA,EAAQ,IAAI3Z,MAGvEsB,EAAQqY,EAAMrY,MAAQqY,EAAMrY,MAAM5D,QAAQ,QAAS,IAAM,GAE1Dmc,EAAAK,GAAI5Y,MAGEA,IAAUzC,OAAOgb,EAAAK,GAAI5Y,OAAO5C,SAAS4C,EAAM5D,QAAQ,YAAa,OACzEmc,EAAAK,GAAI5Y,OAAS,KAAOA,GAHpBuY,EAAAK,GAAI5Y,MAAQA,GAKfuY,EAAAK,GAAA,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAM,OAAA,GAAAV,EAAAzc,KAAA,CAAA,CAAA,EAAA,IAIJ,IA9BDsc,gLA8BC,SAAAc,EAAAC,GAAA,OAAAf,EAAAviB,MAAAiG,KAAAhG,UAAA,IAAA,CAAA4C,IAAA,WAAAsE,MAED,SAASwb,EAAa1X,GAGO,iBAAhB0X,GACT1X,EAASA,GAAU,IACZ2D,IAAM+T,EAEb1X,EAAS0X,GAAe,GAK1B,IAAAY,EAFAtY,EAAS+U,GAAY/Z,KAAKuL,SAAUvG,GAE7BwG,EAAY8R,EAAZ9R,aAAciM,EAAgB6F,EAAhB7F,iBAAkB7L,EAAO0R,EAAP1R,aAElBnP,IAAjB+O,GACF6P,GAAUS,cAActQ,EAAc,CACpCzB,kBAAmBmR,GAAW1P,aAAa0P,YAC3ClR,kBAAmBkR,GAAW1P,aAAa0P,YAC3CjR,oBAAqBiR,GAAW1P,aAAa0P,GAAkB,WAC9D,GAGmB,MAApBzD,IACErS,EAAM9J,WAAWmc,GACnBzS,EAAOyS,iBAAmB,CACxB1O,UAAW0O,GAGb4D,GAAUS,cAAcrE,EAAkB,CACxCtP,OAAQ+S,GAAmB,SAC3BnS,UAAWmS,GAAU,WACpB,IAKPlW,EAAO0I,QAAU1I,EAAO0I,QAAU1N,KAAKuL,SAASmC,QAAU,OAAO9S,cAGjE,IAAI2iB,EAAiB3R,GAAWxG,EAAMtF,MACpC8L,EAAQ4B,OACR5B,EAAQ5G,EAAO0I,SAGjB9B,GAAWxG,EAAMjJ,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAACuR,UACQ9B,EAAQ8B,EACjB,IAGF1I,EAAO4G,QAAUuC,GAAa7H,OAAOiX,EAAgB3R,GAGrD,IAAM4R,EAA0B,GAC5BC,GAAiC,EACrCzd,KAAKqc,aAAapX,QAAQ9I,SAAQ,SAAoCuhB,GACjC,mBAAxBA,EAAY/T,UAA0D,IAAhC+T,EAAY/T,QAAQ3E,KAIrEyY,EAAiCA,GAAkCC,EAAYhU,YAE/E8T,EAAwBG,QAAQD,EAAYlU,UAAWkU,EAAYjU,UACrE,IAEA,IAKImU,EALEC,EAA2B,GACjC7d,KAAKqc,aAAanX,SAAS/I,SAAQ,SAAkCuhB,GACnEG,EAAyBnb,KAAKgb,EAAYlU,UAAWkU,EAAYjU,SACnE,IAGA,IACI1M,EADAV,EAAI,EAGR,IAAKohB,EAAgC,CACnC,IAAMK,EAAQ,CAACjE,GAAgBjgB,KAAKoG,WAAOvD,GAO3C,IANAqhB,EAAMH,QAAQ5jB,MAAM+jB,EAAON,GAC3BM,EAAMpb,KAAK3I,MAAM+jB,EAAOD,GACxB9gB,EAAM+gB,EAAMthB,OAEZohB,EAAUhI,QAAQC,QAAQ7Q,GAEnB3I,EAAIU,GACT6gB,EAAUA,EAAQhZ,KAAKkZ,EAAMzhB,KAAMyhB,EAAMzhB,MAG3C,OAAOuhB,CACT,CAEA7gB,EAAMygB,EAAwBhhB,OAE9B,IAAIuhB,EAAY/Y,EAIhB,IAFA3I,EAAI,EAEGA,EAAIU,GAAK,CACd,IAAMihB,EAAcR,EAAwBnhB,KACtC4hB,EAAaT,EAAwBnhB,KAC3C,IACE0hB,EAAYC,EAAYD,EAI1B,CAHE,MAAOlY,GACPoY,EAAWvjB,KAAKsF,KAAM6F,GACtB,KACF,CACF,CAEA,IACE+X,EAAU/D,GAAgBnf,KAAKsF,KAAM+d,EAGvC,CAFE,MAAOlY,GACP,OAAO+P,QAAQE,OAAOjQ,EACxB,CAKA,IAHAxJ,EAAI,EACJU,EAAM8gB,EAAyBrhB,OAExBH,EAAIU,GACT6gB,EAAUA,EAAQhZ,KAAKiZ,EAAyBxhB,KAAMwhB,EAAyBxhB,MAGjF,OAAOuhB,CACT,GAAC,CAAAhhB,IAAA,SAAAsE,MAED,SAAO8D,GAGL,OAAO0D,GADU6J,IADjBvN,EAAS+U,GAAY/Z,KAAKuL,SAAUvG,IACEwN,QAASxN,EAAO2D,KAC5B3D,EAAOwD,OAAQxD,EAAOyS,iBAClD,KAAC0E,CAAA,CAxKQ,GA4KX/W,EAAMjJ,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BuR,GAE/EyO,GAAM/hB,UAAUsT,GAAU,SAAS/E,EAAK3D,GACtC,OAAOhF,KAAKiF,QAAQ8U,GAAY/U,GAAU,CAAA,EAAI,CAC5C0I,OAAAA,EACA/E,IAAAA,EACAgD,MAAO3G,GAAU,CAAA,GAAI2G,QAG3B,IAEAvG,EAAMjJ,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BuR,GAGrE,SAASwQ,EAAmBC,GAC1B,OAAO,SAAoBxV,EAAKgD,EAAM3G,GACpC,OAAOhF,KAAKiF,QAAQ8U,GAAY/U,GAAU,CAAA,EAAI,CAC5C0I,OAAAA,EACA9B,QAASuS,EAAS,CAChB,eAAgB,uBACd,CAAE,EACNxV,IAAAA,EACAgD,KAAAA,KAGN,CAEAwQ,GAAM/hB,UAAUsT,GAAUwQ,IAE1B/B,GAAM/hB,UAAUsT,EAAS,QAAUwQ,GAAmB,EACxD,IAEA,IAAAE,GAAejC,GCxGfkC,GA7GiB,WACf,SAAAC,EAAYC,GACV,GADoBlV,OAAAiV,GACI,mBAAbC,EACT,MAAM,IAAIxX,UAAU,gCAGtB,IAAIyX,EAEJxe,KAAK4d,QAAU,IAAIhI,SAAQ,SAAyBC,GAClD2I,EAAiB3I,CACnB,IAEA,IAAMrP,EAAQxG,KAGdA,KAAK4d,QAAQhZ,MAAK,SAAAkU,GAChB,GAAKtS,EAAMiY,WAAX,CAIA,IAFA,IAAIpiB,EAAImK,EAAMiY,WAAWjiB,OAElBH,KAAM,GACXmK,EAAMiY,WAAWpiB,GAAGyc,GAEtBtS,EAAMiY,WAAa,IAPI,CAQzB,IAGAze,KAAK4d,QAAQhZ,KAAO,SAAA8Z,GAClB,IAAIC,EAEEf,EAAU,IAAIhI,SAAQ,SAAAC,GAC1BrP,EAAMwS,UAAUnD,GAChB8I,EAAW9I,CACb,IAAGjR,KAAK8Z,GAMR,OAJAd,EAAQ9E,OAAS,WACftS,EAAM4P,YAAYuI,IAGbf,GAGTW,GAAS,SAAgBzZ,EAASE,EAAQC,GACpCuB,EAAM4S,SAKV5S,EAAM4S,OAAS,IAAI3H,GAAc3M,EAASE,EAAQC,GAClDuZ,EAAehY,EAAM4S,QACvB,GACF,CAuDC,OArDD7P,EAAA+U,EAAA,CAAA,CAAA1hB,IAAA,mBAAAsE,MAGA,WACE,GAAIlB,KAAKoZ,OACP,MAAMpZ,KAAKoZ,MAEf,GAEA,CAAAxc,IAAA,YAAAsE,MAIA,SAAU6S,GACJ/T,KAAKoZ,OACPrF,EAAS/T,KAAKoZ,QAIZpZ,KAAKye,WACPze,KAAKye,WAAW/b,KAAKqR,GAErB/T,KAAKye,WAAa,CAAC1K,EAEvB,GAEA,CAAAnX,IAAA,cAAAsE,MAIA,SAAY6S,GACV,GAAK/T,KAAKye,WAAV,CAGA,IAAM1W,EAAQ/H,KAAKye,WAAW1c,QAAQgS,IACvB,IAAXhM,GACF/H,KAAKye,WAAWG,OAAO7W,EAAO,EAHhC,CAKF,IAEA,CAAA,CAAAnL,IAAA,SAAAsE,MAIA,WACE,IAAI4X,EAIJ,MAAO,CACLtS,MAJY,IAAI8X,GAAY,SAAkBO,GAC9C/F,EAAS+F,CACX,IAGE/F,OAAAA,EAEJ,KAACwF,CAAA,CA1Gc,GCXjB,IAAMQ,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjC1oB,OAAOkR,QAAQyT,IAAgB3iB,SAAQ,SAAAI,GAAkB,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAhBK,EAAGmD,EAAA,GAAEmB,EAAKnB,EAAA,GACjD+e,GAAe5d,GAAStE,CAC1B,IAEA,IAAAkmB,GAAehE,GCxBf,IAAMiE,GAnBN,SAASC,EAAeC,GACtB,IAAMzlB,EAAU,IAAI2e,GAAM8G,GACpBC,EAAWtpB,EAAKuiB,GAAM/hB,UAAU6K,QAASzH,GAa/C,OAVA4H,EAAM/E,OAAO6iB,EAAU/G,GAAM/hB,UAAWoD,EAAS,CAACb,YAAY,IAG9DyI,EAAM/E,OAAO6iB,EAAU1lB,EAAS,KAAM,CAACb,YAAY,IAGnDumB,EAAS3oB,OAAS,SAAgB6hB,GAChC,OAAO4G,EAAejJ,GAAYkJ,EAAe7G,KAG5C8G,CACT,CAGcF,CAAezX,WAG7BwX,GAAM5G,MAAQA,GAGd4G,GAAMtR,cAAgBA,GACtBsR,GAAMzE,YAAcA,GACpByE,GAAMxR,SAAWA,GACjBwR,GAAM9H,QAAUA,GAChB8H,GAAMnc,WAAaA,GAGnBmc,GAAMle,WAAaA,EAGnBke,GAAMI,OAASJ,GAAMtR,cAGrBsR,GAAMK,IAAM,SAAaC,GACvB,OAAOzN,QAAQwN,IAAIC,EACrB,EAEAN,GAAMO,OC9CS,SAAgBC,GAC7B,OAAO,SAActhB,GACnB,OAAOshB,EAASxpB,MAAM,KAAMkI,GAEhC,ED6CA8gB,GAAMS,aE7DS,SAAsBC,GACnC,OAAOre,EAAM5J,SAASioB,KAAsC,IAAzBA,EAAQD,YAC7C,EF8DAT,GAAMhJ,YAAcA,GAEpBgJ,GAAM5U,aAAeA,GAErB4U,GAAMW,WAAa,SAAAlpB,GAAK,OAAIwQ,GAAe5F,EAAMxH,WAAWpD,GAAS,IAAI6E,SAAS7E,GAASA,EAAM,EAEjGuoB,GAAMY,WAAarK,GAEnByJ,GAAMjE,eAAiBA,GAEvBiE,GAAK,QAAWA"} \ No newline at end of file diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs new file mode 100644 index 0000000..65d1313 --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs @@ -0,0 +1,3258 @@ +// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors +'use strict'; + +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const {toString} = Object.prototype; +const {getPrototypeOf} = Object; + +const kindOf = (cache => thing => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type +}; + +const typeOfTest = type => thing => typeof thing === type; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const {isArray} = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = thing => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +const isFormData = (thing) => { + let kind; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ) +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => str.trim ? + str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, {allOwnKeys = false} = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +function findKey(obj, key) { + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const {caseless} = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, {allOwnKeys}= {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, {allOwnKeys}); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = (TypedArray => { + // eslint-disable-next-line func-names + return thing => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + + const iterator = generator.call(obj); + + let result; + + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); +}; + +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach(value => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; +}; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + while (size--) { + str += alphabet[Math.random() * length|0]; + } + + return str; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); +} + +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + if(!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +const isAsyncFn = kindOfTest('AsyncFunction'); + +const isThenable = (thing) => + thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); + +var utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable +}; + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ +function AxiosError(message, code, config, request, response) { + Error.call(this); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = (new Error()).stack; + } + + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils$1.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +const prototype$1 = AxiosError.prototype; +const descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED', + 'ERR_NOT_SUPPORT', + 'ERR_INVALID_URL' +// eslint-disable-next-line func-names +].forEach(code => { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError, descriptors); +Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError.from = (error, code, config, request, response, customProps) => { + const axiosError = Object.create(prototype$1); + + utils$1.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, prop => { + return prop !== 'isAxiosError'; + }); + + AxiosError.call(axiosError, error.message, code, config, request, response); + + axiosError.cause = error; + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +// eslint-disable-next-line strict +var httpAdapter = null; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + }); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) + )) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( + formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers + ); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode$1); + } : encode$1; + + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + const _encode = options && options.encode || encode; + + const serializeFn = options && options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? + params.toString() : + new AxiosURLSearchParams(params, options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +var InterceptorManager$1 = InterceptorManager; + +var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; + +var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + +var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + +var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + +var platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1 + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = ( + (product) => { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 + })(typeof navigator !== 'undefined' && navigator.product); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +var utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv +}); + +var platform = { + ...utils, + ...platform$1 +}; + +function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + + transitional: transitionalDefaults, + + adapter: ['xhr', 'http'], + + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if (utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? {'files[]': data} : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType ) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +var defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +var parseHeaders = rawHeaders => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header.trim() + .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach(methodName => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = this[$internals] = (this[$internals] = { + accessors: {} + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + } +}); + +utils$1.freezeMethods(AxiosHeaders); + +var AxiosHeaders$1 = AxiosHeaders; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel(value) { + return !!(value && value.__CANCEL__); +} + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ +function CanceledError(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; +} + +utils$1.inherits(CanceledError, AxiosError, { + __CANCEL__: true +}); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +} + +var cookies = platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils$1.isString(path) && cookie.push('path=' + path); + + utils$1.isString(domain) && cookie.push('domain=' + domain); + + secure === true && cookie.push('secure'); + + document.cookie = cookie.join('; '); + }, + + read(name) { + const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } + + : + + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {} + }; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +var isURLSameOrigin = platform.hasStandardBrowserEnv ? + +// Standard browser envs have full support of the APIs needed to test +// whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement('a'); + let originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + let href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })(); + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +} + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; +} + +function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + + data[isDownloadStream ? 'download' : 'upload'] = true; + + listener(data); + }; +} + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +var xhrAdapter = isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); + let {responseType, withXSRFToken} = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + let contentType; + + if (utils$1.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + let request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + + const fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$1.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if(platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { + // Add xsrf header + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = cancel => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(fullPath); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData || null); + }); +}; + +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter +}; + +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', {value}); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', {value}); + } +}); + +const renderReason = (reason) => `- ${reason}`; + +const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; + +var adapters = { + getAdapter: (adapters) => { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const {length} = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + + const reasons = Object.entries(rejectedReasons) + .map(([id, state]) => `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length ? + (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : + 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; + }, + adapters: knownAdapters +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call( + config, + config.transformRequest + ); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders$1.from(response.headers); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + + return Promise.reject(reason); + }); +} + +const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({caseless}, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + }; + + utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge = mergeMap[prop] || mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +const VERSION = "1.6.8"; + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +var validator = { + assertOptions, + validators: validators$1 +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy; + + Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const {transitional, paramsSerializer, headers} = config; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge( + headers.common, + headers[config.method] + ); + + headers && utils$1.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + (method) => { + delete headers[method]; + } + ); + + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + i = 0; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method, + url, + data: (config || {}).data + })); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url, + data + })); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +var Axios$1 = Axios; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then(cancel => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = onfulfilled => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise(resolve => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } +} + +var CancelToken$1 = CancelToken; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError(payload) { + return utils$1.isObject(payload) && (payload.isAxiosError === true); +} + +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +var HttpStatusCode$1 = HttpStatusCode; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); + + // Copy context to instance + utils$1.extend(instance, context, null, {allOwnKeys: true}); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$1; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken$1; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders$1; + +axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$1; + +axios.default = axios; + +module.exports = axios; +//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/browser/axios.cjs.map b/node_modules/axios/dist/browser/axios.cjs.map new file mode 100644 index 0000000..0f335dc --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","encode","URLSearchParams","FormData","Blob","platform","defaults","AxiosHeaders","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.js b/node_modules/axios/dist/esm/axios.js new file mode 100644 index 0000000..8c71127 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js @@ -0,0 +1,3281 @@ +// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const {toString} = Object.prototype; +const {getPrototypeOf} = Object; + +const kindOf = (cache => thing => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type +}; + +const typeOfTest = type => thing => typeof thing === type; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const {isArray} = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = thing => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +const isFormData = (thing) => { + let kind; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ) +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => str.trim ? + str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, {allOwnKeys = false} = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +function findKey(obj, key) { + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const {caseless} = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, {allOwnKeys}= {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, {allOwnKeys}); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = (TypedArray => { + // eslint-disable-next-line func-names + return thing => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + + const iterator = generator.call(obj); + + let result; + + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); +}; + +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach(value => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; +}; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + while (size--) { + str += alphabet[Math.random() * length|0]; + } + + return str; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); +} + +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + if(!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +const isAsyncFn = kindOfTest('AsyncFunction'); + +const isThenable = (thing) => + thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); + +const utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable +}; + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ +function AxiosError$1(message, code, config, request, response) { + Error.call(this); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = (new Error()).stack; + } + + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils$1.inherits(AxiosError$1, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +const prototype$1 = AxiosError$1.prototype; +const descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED', + 'ERR_NOT_SUPPORT', + 'ERR_INVALID_URL' +// eslint-disable-next-line func-names +].forEach(code => { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError$1, descriptors); +Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError$1.from = (error, code, config, request, response, customProps) => { + const axiosError = Object.create(prototype$1); + + utils$1.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, prop => { + return prop !== 'isAxiosError'; + }); + + AxiosError$1.call(axiosError, error.message, code, config, request, response); + + axiosError.cause = error; + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +// eslint-disable-next-line strict +const httpAdapter = null; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData$1(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + }); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) + )) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( + formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers + ); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData$1(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode$1); + } : encode$1; + + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + const _encode = options && options.encode || encode; + + const serializeFn = options && options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? + params.toString() : + new AxiosURLSearchParams(params, options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +const InterceptorManager$1 = InterceptorManager; + +const transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; + +const URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + +const FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + +const Blob$1 = typeof Blob !== 'undefined' ? Blob : null; + +const platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1 + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = ( + (product) => { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 + })(typeof navigator !== 'undefined' && navigator.product); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv +}); + +const platform = { + ...utils, + ...platform$1 +}; + +function toURLEncodedForm(data, options) { + return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + + transitional: transitionalDefaults, + + adapter: ['xhr', 'http'], + + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if (utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + + return toFormData$1( + isFileList ? {'files[]': data} : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType ) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +const defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +const parseHeaders = rawHeaders => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header.trim() + .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach(methodName => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); +} + +class AxiosHeaders$1 { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = this[$internals] = (this[$internals] = { + accessors: {} + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders$1.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({value}, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + } +}); + +utils$1.freezeMethods(AxiosHeaders$1); + +const AxiosHeaders$2 = AxiosHeaders$1; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$2.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel$1(value) { + return !!(value && value.__CANCEL__); +} + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ +function CanceledError$1(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError$1.call(this, message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); + this.name = 'CanceledError'; +} + +utils$1.inherits(CanceledError$1, AxiosError$1, { + __CANCEL__: true +}); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError$1( + 'Request failed with status code ' + response.status, + [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +} + +const cookies = platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils$1.isString(path) && cookie.push('path=' + path); + + utils$1.isString(domain) && cookie.push('domain=' + domain); + + secure === true && cookie.push('secure'); + + document.cookie = cookie.join('; '); + }, + + read(name) { + const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } + + : + + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {} + }; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +const isURLSameOrigin = platform.hasStandardBrowserEnv ? + +// Standard browser envs have full support of the APIs needed to test +// whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement('a'); + let originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + let href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })(); + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +} + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; +} + +function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + + data[isDownloadStream ? 'download' : 'upload'] = true; + + listener(data); + }; +} + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +const xhrAdapter = isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders$2.from(config.headers).normalize(); + let {responseType, withXSRFToken} = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + let contentType; + + if (utils$1.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + let request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + + const fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$2.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if(platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { + // Add xsrf header + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = cancel => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(fullPath); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData || null); + }); +}; + +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter +}; + +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', {value}); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', {value}); + } +}); + +const renderReason = (reason) => `- ${reason}`; + +const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; + +const adapters = { + getAdapter: (adapters) => { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const {length} = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError$1(`Unknown adapter '${id}'`); + } + } + + if (adapter) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + + const reasons = Object.entries(rejectedReasons) + .map(([id, state]) => `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length ? + (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : + 'as no adapter specified'; + + throw new AxiosError$1( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; + }, + adapters: knownAdapters +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError$1(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$2.from(config.headers); + + // Transform request data + config.data = transformData.call( + config, + config.transformRequest + ); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders$2.from(response.headers); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel$1(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$2.from(reason.response.headers); + } + } + + return Promise.reject(reason); + }); +} + +const headersToObject = (thing) => thing instanceof AxiosHeaders$2 ? { ...thing } : thing; + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig$1(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({caseless}, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + }; + + utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge = mergeMap[prop] || mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +const VERSION$1 = "1.6.8"; + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION$1 + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError$1( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError$1.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); + } + } +} + +const validator = { + assertOptions, + validators: validators$1 +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios$1 { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy; + + Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig$1(this.defaults, config); + + const {transitional, paramsSerializer, headers} = config; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge( + headers.common, + headers[config.method] + ); + + headers && utils$1.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + (method) => { + delete headers[method]; + } + ); + + config.headers = AxiosHeaders$2.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + i = 0; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig$1(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios$1.prototype[method] = function(url, config) { + return this.request(mergeConfig$1(config || {}, { + method, + url, + data: (config || {}).data + })); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig$1(config || {}, { + method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url, + data + })); + }; + } + + Axios$1.prototype[method] = generateHTTPMethod(); + + Axios$1.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +const Axios$2 = Axios$1; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken$1 { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then(cancel => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = onfulfilled => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise(resolve => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError$1(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken$1(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } +} + +const CancelToken$2 = CancelToken$1; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread$1(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError$1(payload) { + return utils$1.isObject(payload) && (payload.isAxiosError === true); +} + +const HttpStatusCode$1 = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, +}; + +Object.entries(HttpStatusCode$1).forEach(([key, value]) => { + HttpStatusCode$1[value] = key; +}); + +const HttpStatusCode$2 = HttpStatusCode$1; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$2(defaultConfig); + const instance = bind(Axios$2.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$2.prototype, context, {allOwnKeys: true}); + + // Copy context to instance + utils$1.extend(instance, context, null, {allOwnKeys: true}); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$2; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError$1; +axios.CancelToken = CancelToken$2; +axios.isCancel = isCancel$1; +axios.VERSION = VERSION$1; +axios.toFormData = toFormData$1; + +// Expose AxiosError class +axios.AxiosError = AxiosError$1; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread$1; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError$1; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig$1; + +axios.AxiosHeaders = AxiosHeaders$2; + +axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$2; + +axios.default = axios; + +// this module should only have a default export +const axios$1 = axios; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig +} = axios$1; + +export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios$1 as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData }; +//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/esm/axios.js.map b/node_modules/axios/dist/esm/axios.js.map new file mode 100644 index 0000000..764b10e --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","defaults","isCancel","CanceledError","mergeConfig","VERSION","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.min.js b/node_modules/axios/dist/esm/axios.min.js new file mode 100644 index 0000000..7b428c3 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js @@ -0,0 +1,2 @@ +function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,r=(o=Object.create(null),e=>{const n=t.call(e);return o[n]||(o[n]=n.slice(8,-1).toLowerCase())});var o;const s=e=>(e=e.toLowerCase(),t=>r(t)===e),i=e=>t=>typeof t===e,{isArray:a}=Array,c=i("undefined");const u=s("ArrayBuffer");const l=i("string"),f=i("function"),d=i("number"),p=e=>null!==e&&"object"==typeof e,h=e=>{if("object"!==r(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},m=s("Date"),y=s("File"),g=s("Blob"),b=s("FileList"),E=s("URLSearchParams");function w(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),a(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,R=e=>!c(e)&&e!==S;const A=(T="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>T&&e instanceof T);var T;const j=s("HTMLFormElement"),C=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),N=s("RegExp"),v=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};w(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},x="abcdefghijklmnopqrstuvwxyz",P={DIGIT:"0123456789",ALPHA:x,ALPHA_DIGIT:x+x.toUpperCase()+"0123456789"};const _=s("AsyncFunction"),F={isArray:a,isArrayBuffer:u,isBuffer:function(e){return null!==e&&!c(e)&&null!==e.constructor&&!c(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=r(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&u(e.buffer),t},isString:l,isNumber:d,isBoolean:e=>!0===e||!1===e,isObject:p,isPlainObject:h,isUndefined:c,isDate:m,isFile:y,isBlob:g,isRegExp:N,isFunction:f,isStream:e=>p(e)&&f(e.pipe),isURLSearchParams:E,isTypedArray:A,isFileList:b,forEach:w,merge:function e(){const{caseless:t}=R(this)&&this||{},n={},r=(r,o)=>{const s=t&&O(n,o)||o;h(n[s])&&h(r)?n[s]=e(n[s],r):h(r)?n[s]=e({},r):a(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e(w(n,((n,o)=>{r&&f(n)?t[o]=e(n,r):t[o]=n}),{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,i,a;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)a=s[i],o&&!o(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:r,kindOfTest:s,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(a(e))return e;let t=e.length;if(!d(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:j,hasOwnProperty:C,hasOwnProp:C,reduceDescriptors:v,freezeMethods:e=>{v(e,((t,n)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return a(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:O,global:S,isContextDefined:R,ALPHABET:P,generateString:(e=16,t=P.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(p(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=a(e)?[]:{};return w(e,((e,t)=>{const s=n(e,r+1);!c(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:_,isThenable:e=>e&&(p(e)||f(e))&&f(e.then)&&f(e.catch)};function U(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}F.inherits(U,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:F.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const B=U.prototype,D={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{D[e]={value:e}})),Object.defineProperties(U,D),Object.defineProperty(B,"isAxiosError",{value:!0}),U.from=(e,t,n,r,o,s)=>{const i=Object.create(B);return F.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),U.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,s&&Object.assign(i,s),i};function L(e){return F.isPlainObject(e)||F.isArray(e)}function k(e){return F.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,n){return e?e.concat(t).map((function(e,t){return e=k(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const I=F.toFlatObject(F,{},null,(function(e){return/^is[A-Z]/.test(e)}));function z(e,t,n){if(!F.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=F.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!F.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,s=n.dots,i=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&F.isSpecCompliantForm(t);if(!F.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(F.isDate(e))return e.toISOString();if(!a&&F.isBlob(e))throw new U("Blob is not supported. Use a Buffer instead.");return F.isArrayBuffer(e)||F.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let a=e;if(e&&!o&&"object"==typeof e)if(F.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(F.isArray(e)&&function(e){return F.isArray(e)&&!e.some(L)}(e)||(F.isFileList(e)||F.endsWith(n,"[]"))&&(a=F.toArray(e)))return n=k(n),a.forEach((function(e,r){!F.isUndefined(e)&&null!==e&&t.append(!0===i?q([n],r,s):null===i?n:n+"[]",c(e))})),!1;return!!L(e)||(t.append(q(o,n,s),c(e)),!1)}const l=[],f=Object.assign(I,{defaultVisitor:u,convertValue:c,isVisitable:L});if(!F.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!F.isUndefined(n)){if(-1!==l.indexOf(n))throw Error("Circular reference detected in "+r.join("."));l.push(n),F.forEach(n,(function(n,s){!0===(!(F.isUndefined(n)||null===n)&&o.call(t,n,F.isString(s)?s.trim():s,r,f))&&e(n,r?r.concat(s):[s])})),l.pop()}}(e),t}function M(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function H(e,t){this._pairs=[],e&&z(e,this,t)}const J=H.prototype;function W(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function V(e,t,n){if(!t)return e;const r=n&&n.encode||W,o=n&&n.serialize;let s;if(s=o?o(t,n):F.isURLSearchParams(t)?t.toString():new H(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}J.append=function(e,t){this._pairs.push([e,t])},J.toString=function(e){const t=e?function(t){return e.call(this,t,M)}:M;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const K=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){F.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},G={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:H,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},X="undefined"!=typeof window&&"undefined"!=typeof document,Q=(Z="undefined"!=typeof navigator&&navigator.product,X&&["ReactNative","NativeScript","NS"].indexOf(Z)<0);var Z;const Y="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ee={...Object.freeze({__proto__:null,hasBrowserEnv:X,hasStandardBrowserWebWorkerEnv:Y,hasStandardBrowserEnv:Q}),...$};function te(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&F.isArray(r)?r.length:s,a)return F.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&F.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&F.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r{t(function(e){return F.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const ne={transitional:G,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=F.isObject(e);o&&F.isHTMLForm(e)&&(e=new FormData(e));if(F.isFormData(e))return r?JSON.stringify(te(e)):e;if(F.isArrayBuffer(e)||F.isBuffer(e)||F.isStream(e)||F.isFile(e)||F.isBlob(e))return e;if(F.isArrayBufferView(e))return e.buffer;if(F.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return z(e,new ee.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ee.isNode&&F.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=F.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return z(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(F.isString(e))try{return(t||JSON.parse)(e),F.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ne.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&F.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw U.from(e,U.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ee.classes.FormData,Blob:ee.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};F.forEach(["delete","get","head","post","put","patch"],(e=>{ne.headers[e]={}}));const re=ne,oe=F.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),se=Symbol("internals");function ie(e){return e&&String(e).trim().toLowerCase()}function ae(e){return!1===e||null==e?e:F.isArray(e)?e.map(ae):String(e)}function ce(e,t,n,r,o){return F.isFunction(r)?r.call(this,t,n):(o&&(t=n),F.isString(t)?F.isString(r)?-1!==t.indexOf(r):F.isRegExp(r)?r.test(t):void 0:void 0)}class ue{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=ie(t);if(!o)throw new Error("header name must be a non-empty string");const s=F.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=ae(e))}const s=(e,t)=>F.forEach(e,((e,n)=>o(e,n,t)));return F.isPlainObject(e)||e instanceof this.constructor?s(e,t):F.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&oe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=ie(e)){const n=F.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(F.isFunction(t))return t.call(this,e,n);if(F.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ie(e)){const n=F.findKey(this,e);return!(!n||void 0===this[n]||t&&!ce(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=ie(e)){const o=F.findKey(n,e);!o||t&&!ce(0,n[o],o,t)||(delete n[o],r=!0)}}return F.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!ce(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return F.forEach(this,((r,o)=>{const s=F.findKey(n,o);if(s)return t[s]=ae(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();i!==o&&delete t[o],t[i]=ae(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return F.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&F.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[se]=this[se]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=ie(e);t[r]||(!function(e,t){const n=F.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return F.isArray(e)?e.forEach(r):r(e),this}}ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),F.reduceDescriptors(ue.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),F.freezeMethods(ue);const le=ue;function fe(e,t){const n=this||re,r=t||n,o=le.from(r.headers);let s=r.data;return F.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function de(e){return!(!e||!e.__CANCEL__)}function pe(e,t,n){U.call(this,null==e?"canceled":e,U.ERR_CANCELED,t,n),this.name="CanceledError"}F.inherits(pe,U,{__CANCEL__:!0});const he=ee.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];F.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),F.isString(r)&&i.push("path="+r),F.isString(o)&&i.push("domain="+o),!0===s&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function me(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const ye=ee.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=F.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function ge(e,t){let n=0;const r=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=r[i];o||(o=c),n[s]=a,r[s]=c;let l=i,f=0;for(;l!==s;)f+=n[l++],l%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-o{const s=o.loaded,i=o.lengthComputable?o.total:void 0,a=s-n,c=r(a);n=s;const u={loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&s<=i?(i-s)/c:void 0,event:o};u[t?"download":"upload"]=!0,e(u)}}const be={http:null,xhr:"undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=le.from(e.headers).normalize();let s,i,{responseType:a,withXSRFToken:c}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(F.isFormData(r))if(ee.hasStandardBrowserEnv||ee.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if(!1!==(i=o.getContentType())){const[e,...t]=i?i.split(";").map((e=>e.trim())).filter(Boolean):[];o.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const f=me(e.baseURL,e.url);function d(){if(!l)return;const r=le.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new U("Request failed with status code "+n.status,[U.ERR_BAD_REQUEST,U.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),u()}),(function(e){n(e),u()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),V(f,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=d:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(d)},l.onabort=function(){l&&(n(new U("Request aborted",U.ECONNABORTED,e,l)),l=null)},l.onerror=function(){n(new U("Network Error",U.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||G;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new U(t,r.clarifyTimeoutError?U.ETIMEDOUT:U.ECONNABORTED,e,l)),l=null},ee.hasStandardBrowserEnv&&(c&&F.isFunction(c)&&(c=c(e)),c||!1!==c&&ye(f))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&he.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&F.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),F.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ge(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ge(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(n(!t||t.type?new pe(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(f);p&&-1===ee.protocols.indexOf(p)?n(new U("Unsupported protocol "+p+":",U.ERR_BAD_REQUEST,e)):l.send(r||null)}))}};F.forEach(be,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Ee=e=>`- ${e}`,we=e=>F.isFunction(e)||null===e||!1===e,Oe=e=>{e=F.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new U("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ee).join("\n"):" "+Ee(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Se(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function Re(e){Se(e),e.headers=le.from(e.headers),e.data=fe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Oe(e.adapter||re.adapter)(e).then((function(t){return Se(e),t.data=fe.call(e,e.transformResponse,t),t.headers=le.from(t.headers),t}),(function(t){return de(t)||(Se(e),t&&t.response&&(t.response.data=fe.call(e,e.transformResponse,t.response),t.response.headers=le.from(t.response.headers))),Promise.reject(t)}))}const Ae=e=>e instanceof le?{...e}:e;function Te(e,t){t=t||{};const n={};function r(e,t,n){return F.isPlainObject(e)&&F.isPlainObject(t)?F.merge.call({caseless:n},e,t):F.isPlainObject(t)?F.merge({},t):F.isArray(t)?t.slice():t}function o(e,t,n){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!F.isUndefined(t))return r(void 0,t)}function i(e,t){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(Ae(e),Ae(t),!0)};return F.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,i=s(e[r],t[r],r);F.isUndefined(i)&&s!==a||(n[r]=i)})),n}const je={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{je[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ce={};je.transitional=function(e,t,n){function r(e,t){return"[Axios v1.6.8] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new U(r(o," has been removed"+(t?" in "+t:"")),U.ERR_DEPRECATED);return t&&!Ce[o]&&(Ce[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const Ne={assertOptions:function(e,t,n){if("object"!=typeof e)throw new U("options must be an object",U.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new U("option "+s+" must be "+n,U.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new U("Unknown option "+s,U.ERR_BAD_OPTION)}},validators:je},ve=Ne.validators;class xe{constructor(e){this.defaults=e,this.interceptors={request:new K,response:new K}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Te(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Ne.assertOptions(n,{silentJSONParsing:ve.transitional(ve.boolean),forcedJSONParsing:ve.transitional(ve.boolean),clarifyTimeoutError:ve.transitional(ve.boolean)},!1),null!=r&&(F.isFunction(r)?t.paramsSerializer={serialize:r}:Ne.assertOptions(r,{encode:ve.function,serialize:ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&F.merge(o.common,o[t.method]);o&&F.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=le.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let u;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,f=0;if(!a){const e=[Re.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),l=e.length,u=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new pe(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new _e((function(t){e=t})),cancel:e}}}const Fe=_e;const Ue={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ue).forEach((([e,t])=>{Ue[t]=e}));const Be=Ue;const De=function t(n){const r=new Pe(n),o=e(Pe.prototype.request,r);return F.extend(o,Pe.prototype,r,{allOwnKeys:!0}),F.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(Te(n,e))},o}(re);De.Axios=Pe,De.CanceledError=pe,De.CancelToken=Fe,De.isCancel=de,De.VERSION="1.6.8",De.toFormData=z,De.AxiosError=U,De.Cancel=De.CanceledError,De.all=function(e){return Promise.all(e)},De.spread=function(e){return function(t){return e.apply(null,t)}},De.isAxiosError=function(e){return F.isObject(e)&&!0===e.isAxiosError},De.mergeConfig=Te,De.AxiosHeaders=le,De.formToJSON=e=>te(F.isHTMLForm(e)?new FormData(e):e),De.getAdapter=Oe,De.HttpStatusCode=Be,De.default=De;const Le=De,{Axios:ke,AxiosError:qe,CanceledError:Ie,isCancel:ze,CancelToken:Me,VERSION:He,all:Je,Cancel:We,isAxiosError:Ve,spread:Ke,toFormData:Ge,AxiosHeaders:$e,HttpStatusCode:Xe,formToJSON:Qe,getAdapter:Ze,mergeConfig:Ye}=Le;export{ke as Axios,qe as AxiosError,$e as AxiosHeaders,We as Cancel,Me as CancelToken,Ie as CanceledError,Xe as HttpStatusCode,He as VERSION,Je as all,Le as default,Qe as formToJSON,Ze as getAdapter,Ve as isAxiosError,ze as isCancel,Ye as mergeConfig,Ke as spread,Ge as toFormData}; +//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/esm/axios.min.js.map b/node_modules/axios/dist/esm/axios.min.js.map new file mode 100644 index 0000000..94ea4b2 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/helpers/speedometer.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["bind","fn","thisArg","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","ALPHABET","DIGIT","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","catch","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","get","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","static","first","computed","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$2","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","cookies","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","isURLSameOrigin","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","requestData","requestHeaders","onCanceled","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","parseProtocol","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","async","configOrUrl","_request","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$2","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$2","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$2","axios","createInstance","defaultConfig","instance","VERSION","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter","default","axios$1"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/node/axios.cjs b/node_modules/axios/dist/node/axios.cjs new file mode 100644 index 0000000..f6fedeb --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs @@ -0,0 +1,4354 @@ +// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors +'use strict'; + +const FormData$1 = require('form-data'); +const url = require('url'); +const proxyFromEnv = require('proxy-from-env'); +const http = require('http'); +const https = require('https'); +const util = require('util'); +const followRedirects = require('follow-redirects'); +const zlib = require('zlib'); +const stream = require('stream'); +const events = require('events'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); +const url__default = /*#__PURE__*/_interopDefaultLegacy(url); +const http__default = /*#__PURE__*/_interopDefaultLegacy(http); +const https__default = /*#__PURE__*/_interopDefaultLegacy(https); +const util__default = /*#__PURE__*/_interopDefaultLegacy(util); +const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); +const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); +const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); + +function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} + +// utils is a library of generic helper functions non-specific to axios + +const {toString} = Object.prototype; +const {getPrototypeOf} = Object; + +const kindOf = (cache => thing => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type +}; + +const typeOfTest = type => thing => typeof thing === type; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const {isArray} = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = thing => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +const isFormData = (thing) => { + let kind; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ) +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => str.trim ? + str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, {allOwnKeys = false} = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +function findKey(obj, key) { + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const {caseless} = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, {allOwnKeys}= {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, {allOwnKeys}); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = (TypedArray => { + // eslint-disable-next-line func-names + return thing => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + + const iterator = generator.call(obj); + + let result; + + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); +}; + +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach(value => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; +}; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + while (size--) { + str += alphabet[Math.random() * length|0]; + } + + return str; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); +} + +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + if(!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +const isAsyncFn = kindOfTest('AsyncFunction'); + +const isThenable = (thing) => + thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); + +const utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable +}; + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ +function AxiosError(message, code, config, request, response) { + Error.call(this); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = (new Error()).stack; + } + + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils$1.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +const prototype$1 = AxiosError.prototype; +const descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED', + 'ERR_NOT_SUPPORT', + 'ERR_INVALID_URL' +// eslint-disable-next-line func-names +].forEach(code => { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError, descriptors); +Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError.from = (error, code, config, request, response, customProps) => { + const axiosError = Object.create(prototype$1); + + utils$1.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, prop => { + return prop !== 'isAxiosError'; + }); + + AxiosError.call(axiosError, error.message, code, config, request, response); + + axiosError.cause = error; + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (FormData__default["default"] || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils$1.isUndefined(source[option]); + }); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + + if (!utils$1.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils$1.isDate(value)) { + return value.toISOString(); + } + + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (value && !path && typeof value === 'object') { + if (utils$1.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils$1.isArray(value) && isFlatArray(value)) || + ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) + )) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + + function build(value, path) { + if (utils$1.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils$1.forEach(value, function each(el, key) { + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( + formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers + ); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils$1.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode$1(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode$1); + } : encode$1; + + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); +}; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ +function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + const _encode = options && options.encode || encode; + + const serializeFn = options && options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? + params.toString() : + new AxiosURLSearchParams(params, options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +const InterceptorManager$1 = InterceptorManager; + +const transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; + +const URLSearchParams = url__default["default"].URLSearchParams; + +const platform$1 = { + isNode: true, + classes: { + URLSearchParams, + FormData: FormData__default["default"], + Blob: typeof Blob !== 'undefined' && Blob || null + }, + protocols: [ 'http', 'https', 'file', 'data' ] +}; + +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = ( + (product) => { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 + })(typeof navigator !== 'undefined' && navigator.product); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const utils = /*#__PURE__*/Object.freeze({ + __proto__: null, + hasBrowserEnv: hasBrowserEnv, + hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv: hasStandardBrowserEnv +}); + +const platform = { + ...utils, + ...platform$1 +}; + +function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); +} + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + + transitional: transitionalDefaults, + + adapter: ['xhr', 'http'], + + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils$1.isObject(data); + + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils$1.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if (utils$1.isArrayBuffer(data) || + utils$1.isBuffer(data) || + utils$1.isStream(data) || + utils$1.isFile(data) || + utils$1.isBlob(data) + ) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? {'files[]': data} : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType ) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } +}; + +utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +const defaults$1 = defaults; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils$1.toObjectSet([ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +const parseHeaders = rawHeaders => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils$1.isString(value)) return; + + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header.trim() + .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach(methodName => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils$1.findKey(self, lHeader); + + if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils$1.findKey(this, header); + + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils$1.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils$1.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = this[$internals] = (this[$internals] = { + accessors: {} + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + +// reserved names hotfix +utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + } +}); + +utils$1.freezeMethods(AxiosHeaders); + +const AxiosHeaders$1 = AxiosHeaders; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} + +function isCancel(value) { + return !!(value && value.__CANCEL__); +} + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ +function CanceledError(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; +} + +utils$1.inherits(CanceledError, AxiosError, { + __CANCEL__: true +}); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +} + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +const VERSION = "1.6.8"; + +function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +} + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +function fromDataURI(uri, asBlob, options) { + const _Blob = options && options.Blob || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], {type: mime}); + } + + return buffer; + } + + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); +} + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + const threshold = 1000 / freq; + let timer = null; + return function throttled(force, args) { + const now = Date.now(); + if (force || now - timestamp > threshold) { + if (timer) { + clearTimeout(timer); + timer = null; + } + timestamp = now; + return fn.apply(null, args); + } + if (!timer) { + timer = setTimeout(() => { + timer = null; + timestamp = Date.now(); + return fn.apply(null, args); + }, threshold - (now - timestamp)); + } + }; +} + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; +} + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream__default["default"].Transform{ + constructor(options) { + options = utils$1.toFlatObject(options, { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15 + }, null, (prop, source) => { + return !utils$1.isUndefined(source[prop]); + }); + + super({ + readableHighWaterMark: options.chunkSize + }); + + const self = this; + + const internals = this[kInternals] = { + length: options.length, + timeWindow: options.timeWindow, + ticksRate: options.ticksRate, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null + }; + + const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); + + this.on('newListener', event => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + + let bytesNotified = 0; + + internals.updateProgress = throttle(function throttledHandler() { + const totalBytes = internals.length; + const bytesTransferred = internals.bytesSeen; + const progressBytes = bytesTransferred - bytesNotified; + if (!progressBytes || self.destroyed) return; + + const rate = _speedometer(progressBytes); + + bytesNotified = bytesTransferred; + + process.nextTick(() => { + self.emit('progress', { + 'loaded': bytesTransferred, + 'total': totalBytes, + 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, + 'bytes': progressBytes, + 'rate': rate ? rate : undefined, + 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? + (totalBytes - bytesTransferred) / rate : undefined + }); + }); + }, internals.ticksRate); + + const onFinish = () => { + internals.updateProgress(true); + }; + + this.once('end', onFinish); + this.once('error', onFinish); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const self = this; + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = (maxRate / divider); + const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; + + function pushChunk(_chunk, _callback) { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + if (internals.isCaptured) { + internals.updateProgress(); + } + + if (self.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + } + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk(_chunk, chunkRemainder ? () => { + process.nextTick(_callback, null, chunkRemainder); + } : _callback); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } + + setLength(length) { + this[kInternals].length = +length; + return this; + } +} + +const AxiosTransformStream$1 = AxiosTransformStream; + +const {asyncIterator} = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream(); + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer(); + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +}; + +const readBlob$1 = readBlob; + +const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = new util.TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const {escapeName} = this.constructor; + const isStringValue = utils$1.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode(){ + yield this.headers; + + const {value} = this; + + if(utils$1.isTypedArray(value)) { + yield value; + } else { + yield* readBlob$1(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace(/[\r\n"]/g, (match) => ({ + '\r' : '%0D', + '\n' : '%0A', + '"' : '%22', + }[match])); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + utils$1.generateString(size, BOUNDARY_ALPHABET) + } = options || {}; + + if(!utils$1.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long') + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils$1.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}` + }; + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return stream.Readable.from((async function *() { + for(const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })()); +}; + +const formDataToStream$1 = formDataToStream; + +class ZlibHeaderTransformStream extends stream__default["default"].Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; + +const callbackify = (fn, reducer) => { + return utils$1.isAsyncFn(fn) ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } : fn; +}; + +const callbackify$1 = callbackify; + +const zlibOptions = { + flush: zlib__default["default"].constants.Z_SYNC_FLUSH, + finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH +}; + +const brotliOptions = { + flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH +}; + +const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); + +const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"]; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map(protocol => { + return protocol + ':'; +}); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object} options - The options object that was passed to the request. + * + * @returns {Object} + */ +function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = proxyFromEnv.getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + if (proxy.auth.username || proxy.auth.password) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } + const base64 = Buffer + .from(proxy.auth, 'utf8') + .toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + }; + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + }; + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }) +}; + +const resolveFamily = ({address, family}) => { + if (!utils$1.isString(address)) { + throw TypeError('address must be a string'); + } + return ({ + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4) + }); +}; + +const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family}); + +/*eslint consistent-return:0*/ +const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let {data, lookup, family} = config; + const {responseType, responseEncoding} = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + if (lookup) { + const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + + const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + }; + } + + // temporary internal emitter until the AxiosRequest class will be implemented + const emitter = new events.EventEmitter(); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + emitter.removeAllListeners(); + }; + + onDone((value, isRejected) => { + isDone = true; + if (isRejected) { + rejected = true; + onFinished(); + } + }); + + function abort(reason) { + emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); + } + + emitter.once('abort', reject); + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url); + const parsed = new URL(fullPath, 'http://localhost'); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob + }); + } catch (err) { + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils$1.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream__default["default"].Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders$1(), + config + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject(new AxiosError( + 'Unsupported protocol ' + protocol, + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + const headers = AxiosHeaders$1.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const onDownloadProgress = config.onDownloadProgress; + const onUploadProgress = config.onUploadProgress; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils$1.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream$1(data, (formHeaders) => { + headers.set(formHeaders); + }, { + tag: `axios-${VERSION}-boundary`, + boundary: userBoundary && userBoundary[1] || undefined + }); + // support for https://www.npmjs.com/package/form-data api + } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util__default["default"].promisify(data.getLength).call(data); + Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) { + } + } + } else if (utils$1.isBlob(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream__default["default"].Readable.from(readBlob$1(data)); + } else if (data && !utils$1.isStream(data)) { + if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils$1.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject(new AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject(new AxiosError( + 'Request body larger than maxBodyLength limit', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + } + + const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); + + if (utils$1.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils$1.isStream(data)) { + data = stream__default["default"].Readable.from(data, {objectMode: false}); + } + + data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ + length: contentLength, + maxRate: utils$1.toFiniteNumber(maxUploadRate) + })], utils$1.noop); + + onUploadProgress && data.on('progress', progress => { + onUploadProgress(Object.assign(progress, { + upload: true + })); + }); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {} + }; + + // cacheable-lookup integration hotfix + !utils$1.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname; + options.port = parsed.port; + setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https__default["default"] : http__default["default"]; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = +res.headers['content-length']; + + if (onDownloadProgress) { + const transformStream = new AxiosTransformStream$1({ + length: utils$1.toFiniteNumber(responseLength), + maxRate: utils$1.toFiniteNumber(maxDownloadRate) + }); + + onDownloadProgress && transformStream.on('progress', progress => { + onDownloadProgress(Object.assign(progress, { + download: true + })); + }); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream$1()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; + + const offListeners = stream__default["default"].finished(responseStream, () => { + offListeners(); + onFinished(); + }); + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders$1(res.headers), + config, + request: lastRequest + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils$1.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + emitter.once('abort', err => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + emitter.once('abort', err => { + reject(err); + req.destroy(err); + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + // @todo remove + // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; + reject(AxiosError.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + reject(new AxiosError( + 'error trying to parse `config.timeout` to int', + AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + )); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + req + )); + abort(); + }); + } + + + // Send the request + if (utils$1.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', err => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + req.end(data); + } + }); +}; + +const cookies = platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils$1.isString(path) && cookie.push('path=' + path); + + utils$1.isString(domain) && cookie.push('domain=' + domain); + + secure === true && cookie.push('secure'); + + document.cookie = cookie.join('; '); + }, + + read(name) { + const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } + + : + + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {} + }; + +const isURLSameOrigin = platform.hasStandardBrowserEnv ? + +// Standard browser envs have full support of the APIs needed to test +// whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement('a'); + let originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + let href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })(); + +function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + + data[isDownloadStream ? 'download' : 'upload'] = true; + + listener(data); + }; +} + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +const xhrAdapter = isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); + let {responseType, withXSRFToken} = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + let contentType; + + if (utils$1.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + let request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + + const fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders$1.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if(platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { + // Add xsrf header + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils$1.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = cancel => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(fullPath); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData || null); + }); +}; + +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter +}; + +utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', {value}); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', {value}); + } +}); + +const renderReason = (reason) => `- ${reason}`; + +const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; + +const adapters = { + getAdapter: (adapters) => { + adapters = utils$1.isArray(adapters) ? adapters : [adapters]; + + const {length} = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + + const reasons = Object.entries(rejectedReasons) + .map(([id, state]) => `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length ? + (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : + 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; + }, + adapters: knownAdapters +}; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders$1.from(config.headers); + + // Transform request data + config.data = transformData.call( + config, + config.transformRequest + ); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders$1.from(response.headers); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + + return Promise.reject(reason); + }); +} + +const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({caseless}, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + }; + + utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge = mergeMap[prop] || mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} + +const validators$1 = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators$1[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators$1.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +const validator = { + assertOptions, + validators: validators$1 +}; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy; + + Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const {transitional, paramsSerializer, headers} = config; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils$1.merge( + headers.common, + headers[config.method] + ); + + headers && utils$1.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + (method) => { + delete headers[method]; + } + ); + + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + i = 0; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method, + url, + data: (config || {}).data + })); + }; +}); + +utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url, + data + })); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +const Axios$1 = Axios; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then(cancel => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = onfulfilled => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise(resolve => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } +} + +const CancelToken$1 = CancelToken; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +function isAxiosError(payload) { + return utils$1.isObject(payload) && (payload.isAxiosError === true); +} + +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +const HttpStatusCode$1 = HttpStatusCode; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance = bind(Axios$1.prototype.request, context); + + // Copy axios.prototype to instance + utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); + + // Copy context to instance + utils$1.extend(instance, context, null, {allOwnKeys: true}); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults$1); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios$1; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken$1; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders$1; + +axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode$1; + +axios.default = axios; + +module.exports = axios; +//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/node/axios.cjs.map b/node_modules/axios/dist/node/axios.cjs.map new file mode 100644 index 0000000..8fa9bd1 --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/throttle.js","../../lib/helpers/speedometer.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/adapters/http.js","../../lib/helpers/cookies.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled(force, args) {\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, args);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, args);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\nimport throttle from './throttle.js';\nimport speedometer from './speedometer.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n 'loaded': bytesTransferred,\n 'total': totalBytes,\n 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined,\n 'bytes': progressBytes,\n 'rate': rate ? rate : undefined,\n 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nexport default AxiosTransformStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","import {TextEncoder} from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport {getProxyForUrl} from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","PlatformFormData","encode","url","FormData","platform","defaults","AxiosHeaders","stream","TextEncoder","readBlob","Readable","zlib","followRedirects","getProxyForUrl","callbackify","EventEmitter","formDataToStream","util","AxiosTransformStream","https","http","ZlibHeaderTransformStream","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts new file mode 100644 index 0000000..d95e6ef --- /dev/null +++ b/node_modules/axios/index.d.cts @@ -0,0 +1,542 @@ +interface RawAxiosHeaders { + [key: string]: axios.AxiosHeaderValue; +} + +type MethodsHeaders = Partial<{ + [Key in axios.Method as Lowercase]: AxiosHeaders; +} & {common: AxiosHeaders}>; + +type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean; + +type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; + +type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent'| 'Content-Encoding' | 'Authorization'; + +type ContentType = axios.AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; + +type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; + +declare class AxiosHeaders { + constructor( + headers?: RawAxiosHeaders | AxiosHeaders | string + ); + + [key: string]: any; + + set(headerName?: string, value?: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat(...targets: Array): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat(...targets: Array): AxiosHeaders; + + setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>; +} + +declare class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: axios.InternalAxiosRequestConfig, + request?: any, + response?: axios.AxiosResponse + ); + + config?: axios.InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: axios.AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; + static readonly ERR_NETWORK = "ERR_NETWORK"; + static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; + static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; + static readonly ERR_CANCELED = "ERR_CANCELED"; + static readonly ECONNABORTED = "ECONNABORTED"; + static readonly ETIMEDOUT = "ETIMEDOUT"; +} + +declare class CanceledError extends AxiosError { +} + +declare class Axios { + constructor(config?: axios.AxiosRequestConfig); + defaults: axios.AxiosDefaults; + interceptors: { + request: axios.AxiosInterceptorManager; + response: axios.AxiosInterceptorManager; + }; + getUri(config?: axios.AxiosRequestConfig): string; + request, D = any>(config: axios.AxiosRequestConfig): Promise; + get, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; + delete, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; + head, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; + options, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; + post, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; + put, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; + patch, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; + postForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; + putForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; + patchForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; +} + +declare enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +type InternalAxiosError = AxiosError; + +declare namespace axios { + type AxiosError = InternalAxiosError; + + type RawAxiosRequestHeaders = Partial; + + type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + + type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; + + type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; + } & { + "set-cookie": string[]; + }; + + type RawAxiosResponseHeaders = Partial; + + type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + + interface AxiosRequestTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; + } + + interface AxiosResponseTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; + } + + interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; + } + + interface AxiosBasicCredentials { + username: string; + password: string; + } + + interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; + } + + type Method = + | 'get' | 'GET' + | 'delete' | 'DELETE' + | 'head' | 'HEAD' + | 'options' | 'OPTIONS' + | 'post' | 'POST' + | 'put' | 'PUT' + | 'patch' | 'PATCH' + | 'purge' | 'PURGE' + | 'link' | 'LINK' + | 'unlink' | 'UNLINK'; + + type ResponseType = + | 'arraybuffer' + | 'blob' + | 'document' + | 'json' + | 'text' + | 'stream'; + + type responseEncoding = + | 'ascii' | 'ASCII' + | 'ansi' | 'ANSI' + | 'binary' | 'BINARY' + | 'base64' | 'BASE64' + | 'base64url' | 'BASE64URL' + | 'hex' | 'HEX' + | 'latin1' | 'LATIN1' + | 'ucs-2' | 'UCS-2' + | 'ucs2' | 'UCS2' + | 'utf-8' | 'UTF-8' + | 'utf8' | 'UTF8' + | 'utf16le' | 'UTF16LE'; + + interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; + } + + interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; + } + + interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; + } + + interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers + ): boolean; + } + + interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; + } + + // tslint:disable-next-line + interface FormSerializerOptions extends SerializerOptions { + } + + interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; + } + + interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; + } + + interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; + } + + type MaxUploadRate = number; + + type MaxDownloadRate = number; + + type BrowserProgressEvent = any; + + interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; + } + + type Milliseconds = number; + + type AxiosAdapterName = 'xhr' | 'http' | string; + + type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + + type AddressFamily = 4 | 6 | undefined; + + interface LookupAddressEntry { + address: string; + family?: AddressFamily; + } + + type LookupAddress = string | LookupAddressEntry; + + interface AxiosRequestConfig { + url?: string; + method?: Method | string; + baseURL?: string; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: responseEncoding | string; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | + ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); + withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); + } + + // Alias + type RawAxiosRequestConfig = AxiosRequestConfig; + + interface InternalAxiosRequestConfig extends AxiosRequestConfig { + headers: AxiosRequestHeaders; + } + + interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; + } + + interface AxiosDefaults extends Omit, 'headers'> { + headers: HeadersDefaults; + } + + interface CreateAxiosDefaults extends Omit, 'headers'> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; + } + + interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: RawAxiosResponseHeaders | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; + } + + type AxiosPromise = Promise>; + + interface CancelStatic { + new (message?: string): Cancel; + } + + interface Cancel { + message: string | undefined; + } + + interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; + } + + interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; + } + + interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; + } + + interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; + } + + interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; + } + + interface AxiosInterceptorManager { + use(onFulfilled?: (value: V) => V | Promise, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number; + eject(id: number): void; + clear(): void; + } + + interface AxiosInstance extends Axios { + , D = any>(config: AxiosRequestConfig): Promise; + , D = any>(url: string, config?: AxiosRequestConfig): Promise; + + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue + } + }; + } + + interface GenericFormData { + append(name: string, value: any, options?: any): any; + } + + interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; + } + + interface AxiosStatic extends AxiosInstance { + create(config?: CreateAxiosDefaults): AxiosInstance; + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + CanceledError: typeof CanceledError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel(value: any): value is Cancel; + all(values: Array>): Promise; + spread(callback: (...args: T[]) => R): (array: T[]) => R; + isAxiosError(payload: any): payload is AxiosError; + toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; + formToJSON(form: GenericFormData|GenericHTMLFormElement): object; + getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; + AxiosHeaders: typeof AxiosHeaders; + } +} + +declare const axios: axios.AxiosStatic; + +export = axios; diff --git a/node_modules/axios/index.d.ts b/node_modules/axios/index.d.ts new file mode 100644 index 0000000..02a8c09 --- /dev/null +++ b/node_modules/axios/index.d.ts @@ -0,0 +1,559 @@ +// TypeScript Version: 4.7 +export type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; + +interface RawAxiosHeaders { + [key: string]: AxiosHeaderValue; +} + +type MethodsHeaders = Partial<{ + [Key in Method as Lowercase]: AxiosHeaders; +} & {common: AxiosHeaders}>; + +type AxiosHeaderMatcher = string | RegExp | ((this: AxiosHeaders, value: string, name: string) => boolean); + +type AxiosHeaderParser = (this: AxiosHeaders, value: AxiosHeaderValue, header: string) => any; + +export class AxiosHeaders { + constructor( + headers?: RawAxiosHeaders | AxiosHeaders | string + ); + + [key: string]: any; + + set(headerName?: string, value?: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat(...targets: Array): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat(...targets: Array): AxiosHeaders; + + setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; +} + +type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent' | 'Content-Encoding' | 'Authorization'; + +type ContentType = AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; + +export type RawAxiosRequestHeaders = Partial; + +export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + +type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; + +type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; +} & { + "set-cookie": string[]; +}; + +export type RawAxiosResponseHeaders = Partial; + +export type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + +export interface AxiosRequestTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; +} + +export interface AxiosResponseTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; +} + +export interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; +} + +export interface AxiosBasicCredentials { + username: string; + password: string; +} + +export interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; +} + +export enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +export type Method = + | 'get' | 'GET' + | 'delete' | 'DELETE' + | 'head' | 'HEAD' + | 'options' | 'OPTIONS' + | 'post' | 'POST' + | 'put' | 'PUT' + | 'patch' | 'PATCH' + | 'purge' | 'PURGE' + | 'link' | 'LINK' + | 'unlink' | 'UNLINK'; + +export type ResponseType = + | 'arraybuffer' + | 'blob' + | 'document' + | 'json' + | 'text' + | 'stream'; + +export type responseEncoding = + | 'ascii' | 'ASCII' + | 'ansi' | 'ANSI' + | 'binary' | 'BINARY' + | 'base64' | 'BASE64' + | 'base64url' | 'BASE64URL' + | 'hex' | 'HEX' + | 'latin1' | 'LATIN1' + | 'ucs-2' | 'UCS-2' + | 'ucs2' | 'UCS2' + | 'utf-8' | 'UTF-8' + | 'utf8' | 'UTF8' + | 'utf16le' | 'UTF16LE'; + +export interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; +} + +export interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; +} + +export interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; +} + +export interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers + ): boolean; +} + +export interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; +} + +// tslint:disable-next-line +export interface FormSerializerOptions extends SerializerOptions { +} + +export interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; +} + +export interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; +} + +export interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; +} + +type MaxUploadRate = number; + +type MaxDownloadRate = number; + +type BrowserProgressEvent = any; + +export interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; +} + +type Milliseconds = number; + +type AxiosAdapterName = 'xhr' | 'http' | string; + +type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + +export type AddressFamily = 4 | 6 | undefined; + +export interface LookupAddressEntry { + address: string; + family?: AddressFamily; +} + +export type LookupAddress = string | LookupAddressEntry; + +export interface AxiosRequestConfig { + url?: string; + method?: Method | string; + baseURL?: string; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: responseEncoding | string; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | + ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); + withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); +} + +// Alias +export type RawAxiosRequestConfig = AxiosRequestConfig; + +export interface InternalAxiosRequestConfig extends AxiosRequestConfig { + headers: AxiosRequestHeaders; +} + +export interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; +} + +export interface AxiosDefaults extends Omit, 'headers'> { + headers: HeadersDefaults; +} + +export interface CreateAxiosDefaults extends Omit, 'headers'> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; +} + +export interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: RawAxiosResponseHeaders | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; +} + +export class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse + ); + + config?: InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + static from( + error: Error | unknown, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse, + customProps?: object, +): AxiosError; + static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; + static readonly ERR_NETWORK = "ERR_NETWORK"; + static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; + static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; + static readonly ERR_CANCELED = "ERR_CANCELED"; + static readonly ECONNABORTED = "ECONNABORTED"; + static readonly ETIMEDOUT = "ETIMEDOUT"; +} + +export class CanceledError extends AxiosError { +} + +export type AxiosPromise = Promise>; + +export interface CancelStatic { + new (message?: string): Cancel; +} + +export interface Cancel { + message: string | undefined; +} + +export interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; +} + +export interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; +} + +export interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; +} + +export interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; +} + +export interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; +} + +export interface AxiosInterceptorManager { + use(onFulfilled?: ((value: V) => V | Promise) | null, onRejected?: ((error: any) => any) | null, options?: AxiosInterceptorOptions): number; + eject(id: number): void; + clear(): void; +} + +export class Axios { + constructor(config?: AxiosRequestConfig); + defaults: AxiosDefaults; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request, D = any>(config: AxiosRequestConfig): Promise; + get, D = any>(url: string, config?: AxiosRequestConfig): Promise; + delete, D = any>(url: string, config?: AxiosRequestConfig): Promise; + head, D = any>(url: string, config?: AxiosRequestConfig): Promise; + options, D = any>(url: string, config?: AxiosRequestConfig): Promise; + post, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + put, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + patch, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + postForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + putForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + patchForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; +} + +export interface AxiosInstance extends Axios { + , D = any>(config: AxiosRequestConfig): Promise; + , D = any>(url: string, config?: AxiosRequestConfig): Promise; + + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue + } + }; +} + +export interface GenericFormData { + append(name: string, value: any, options?: any): any; +} + +export interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; +} + +export function getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; + +export function toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; + +export function formToJSON(form: GenericFormData|GenericHTMLFormElement): object; + +export function isAxiosError(payload: any): payload is AxiosError; + +export function spread(callback: (...args: T[]) => R): (array: T[]) => R; + +export function isCancel(value: any): value is Cancel; + +export function all(values: Array>): Promise; + +export interface AxiosStatic extends AxiosInstance { + create(config?: CreateAxiosDefaults): AxiosInstance; + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel: typeof isCancel; + all: typeof all; + spread: typeof spread; + isAxiosError: typeof isAxiosError; + toFormData: typeof toFormData; + formToJSON: typeof formToJSON; + getAdapter: typeof getAdapter; + CanceledError: typeof CanceledError; + AxiosHeaders: typeof AxiosHeaders; +} + +declare const axios: AxiosStatic; + +export default axios; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js new file mode 100644 index 0000000..fba3990 --- /dev/null +++ b/node_modules/axios/index.js @@ -0,0 +1,43 @@ +import axios from './lib/axios.js'; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig +} = axios; + +export { + axios as default, + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig +} diff --git a/node_modules/axios/lib/adapters/README.md b/node_modules/axios/lib/adapters/README.md new file mode 100644 index 0000000..68f1118 --- /dev/null +++ b/node_modules/axios/lib/adapters/README.md @@ -0,0 +1,37 @@ +# axios // adapters + +The modules under `adapters/` are modules that handle dispatching a request and settling a returned `Promise` once a response is received. + +## Example + +```js +var settle = require('./../core/settle'); + +module.exports = function myAdapter(config) { + // At this point: + // - config has been merged with defaults + // - request transformers have already run + // - request interceptors have already run + + // Make the request using config provided + // Upon response settle the Promise + + return new Promise(function(resolve, reject) { + + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // From here: + // - response transformers will run + // - response interceptors will run + }); +} +``` diff --git a/node_modules/axios/lib/adapters/adapters.js b/node_modules/axios/lib/adapters/adapters.js new file mode 100644 index 0000000..550997d --- /dev/null +++ b/node_modules/axios/lib/adapters/adapters.js @@ -0,0 +1,77 @@ +import utils from '../utils.js'; +import httpAdapter from './http.js'; +import xhrAdapter from './xhr.js'; +import AxiosError from "../core/AxiosError.js"; + +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter +} + +utils.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', {value}); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', {value}); + } +}); + +const renderReason = (reason) => `- ${reason}`; + +const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false; + +export default { + getAdapter: (adapters) => { + adapters = utils.isArray(adapters) ? adapters : [adapters]; + + const {length} = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + + const reasons = Object.entries(rejectedReasons) + .map(([id, state]) => `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length ? + (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : + 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; + }, + adapters: knownAdapters +} diff --git a/node_modules/axios/lib/adapters/http.js b/node_modules/axios/lib/adapters/http.js new file mode 100755 index 0000000..768e4a5 --- /dev/null +++ b/node_modules/axios/lib/adapters/http.js @@ -0,0 +1,685 @@ +'use strict'; + +import utils from './../utils.js'; +import settle from './../core/settle.js'; +import buildFullPath from '../core/buildFullPath.js'; +import buildURL from './../helpers/buildURL.js'; +import {getProxyForUrl} from 'proxy-from-env'; +import http from 'http'; +import https from 'https'; +import util from 'util'; +import followRedirects from 'follow-redirects'; +import zlib from 'zlib'; +import {VERSION} from '../env/data.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import platform from '../platform/index.js'; +import fromDataURI from '../helpers/fromDataURI.js'; +import stream from 'stream'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; +import {EventEmitter} from 'events'; +import formDataToStream from "../helpers/formDataToStream.js"; +import readBlob from "../helpers/readBlob.js"; +import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; +import callbackify from "../helpers/callbackify.js"; + +const zlibOptions = { + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH +}; + +const brotliOptions = { + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH +} + +const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); + +const {http: httpFollow, https: httpsFollow} = followRedirects; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map(protocol => { + return protocol + ':'; +}); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object} options - The options object that was passed to the request. + * + * @returns {Object} + */ +function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + if (proxy.auth.username || proxy.auth.password) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } + const base64 = Buffer + .from(proxy.auth, 'utf8') + .toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + } + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + } + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }) +}; + +const resolveFamily = ({address, family}) => { + if (!utils.isString(address)) { + throw TypeError('address must be a string'); + } + return ({ + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4) + }); +} + +const buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family}); + +/*eslint consistent-return:0*/ +export default isHttpAdapterSupported && function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let {data, lookup, family} = config; + const {responseType, responseEncoding} = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + if (lookup) { + const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + + const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + } + } + + // temporary internal emitter until the AxiosRequest class will be implemented + const emitter = new EventEmitter(); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + emitter.removeAllListeners(); + } + + onDone((value, isRejected) => { + isDone = true; + if (isRejected) { + rejected = true; + onFinished(); + } + }); + + function abort(reason) { + emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); + } + + emitter.once('abort', reject); + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url); + const parsed = new URL(fullPath, 'http://localhost'); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob + }); + } catch (err) { + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream.Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders(), + config + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject(new AxiosError( + 'Unsupported protocol ' + protocol, + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + const headers = AxiosHeaders.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const onDownloadProgress = config.onDownloadProgress; + const onUploadProgress = config.onUploadProgress; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream(data, (formHeaders) => { + headers.set(formHeaders); + }, { + tag: `axios-${VERSION}-boundary`, + boundary: userBoundary && userBoundary[1] || undefined + }); + // support for https://www.npmjs.com/package/form-data api + } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util.promisify(data.getLength).call(data); + Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) { + } + } + } else if (utils.isBlob(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream.Readable.from(readBlob(data)); + } else if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject(new AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject(new AxiosError( + 'Request body larger than maxBodyLength limit', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + } + + const contentLength = utils.toFiniteNumber(headers.getContentLength()); + + if (utils.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils.isStream(data)) { + data = stream.Readable.from(data, {objectMode: false}); + } + + data = stream.pipeline([data, new AxiosTransformStream({ + length: contentLength, + maxRate: utils.toFiniteNumber(maxUploadRate) + })], utils.noop); + + onUploadProgress && data.on('progress', progress => { + onUploadProgress(Object.assign(progress, { + upload: true + })); + }); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {} + }; + + // cacheable-lookup integration hotfix + !utils.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname; + options.port = parsed.port; + setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = +res.headers['content-length']; + + if (onDownloadProgress) { + const transformStream = new AxiosTransformStream({ + length: utils.toFiniteNumber(responseLength), + maxRate: utils.toFiniteNumber(maxDownloadRate) + }); + + onDownloadProgress && transformStream.on('progress', progress => { + onDownloadProgress(Object.assign(progress, { + download: true + })); + }); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; + + const offListeners = stream.finished(responseStream, () => { + offListeners(); + onFinished(); + }); + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders(res.headers), + config, + request: lastRequest + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + emitter.once('abort', err => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + emitter.once('abort', err => { + reject(err); + req.destroy(err); + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + // @todo remove + // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; + reject(AxiosError.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + reject(new AxiosError( + 'error trying to parse `config.timeout` to int', + AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + )); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + req + )); + abort(); + }); + } + + + // Send the request + if (utils.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', err => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + req.end(data); + } + }); +} + +export const __setProxy = setProxy; diff --git a/node_modules/axios/lib/adapters/xhr.js b/node_modules/axios/lib/adapters/xhr.js new file mode 100644 index 0000000..26126b2 --- /dev/null +++ b/node_modules/axios/lib/adapters/xhr.js @@ -0,0 +1,260 @@ +'use strict'; + +import utils from './../utils.js'; +import settle from './../core/settle.js'; +import cookies from './../helpers/cookies.js'; +import buildURL from './../helpers/buildURL.js'; +import buildFullPath from '../core/buildFullPath.js'; +import isURLSameOrigin from './../helpers/isURLSameOrigin.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import parseProtocol from '../helpers/parseProtocol.js'; +import platform from '../platform/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import speedometer from '../helpers/speedometer.js'; + +function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + + data[isDownloadStream ? 'download' : 'upload'] = true; + + listener(data); + }; +} + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +export default isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders.from(config.headers).normalize(); + let {responseType, withXSRFToken} = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + let contentType; + + if (utils.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + let request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + + const fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if(platform.hasStandardBrowserEnv) { + withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { + // Add xsrf header + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = cancel => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(fullPath); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData || null); + }); +} diff --git a/node_modules/axios/lib/axios.js b/node_modules/axios/lib/axios.js new file mode 100644 index 0000000..873f246 --- /dev/null +++ b/node_modules/axios/lib/axios.js @@ -0,0 +1,89 @@ +'use strict'; + +import utils from './utils.js'; +import bind from './helpers/bind.js'; +import Axios from './core/Axios.js'; +import mergeConfig from './core/mergeConfig.js'; +import defaults from './defaults/index.js'; +import formDataToJSON from './helpers/formDataToJSON.js'; +import CanceledError from './cancel/CanceledError.js'; +import CancelToken from './cancel/CancelToken.js'; +import isCancel from './cancel/isCancel.js'; +import {VERSION} from './env/data.js'; +import toFormData from './helpers/toFormData.js'; +import AxiosError from './core/AxiosError.js'; +import spread from './helpers/spread.js'; +import isAxiosError from './helpers/isAxiosError.js'; +import AxiosHeaders from "./core/AxiosHeaders.js"; +import adapters from './adapters/adapters.js'; +import HttpStatusCode from './helpers/HttpStatusCode.js'; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context, {allOwnKeys: true}); + + // Copy context to instance + utils.extend(instance, context, null, {allOwnKeys: true}); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders; + +axios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode; + +axios.default = axios; + +// this module should only have a default export +export default axios diff --git a/node_modules/axios/lib/cancel/CancelToken.js b/node_modules/axios/lib/cancel/CancelToken.js new file mode 100644 index 0000000..20d8f68 --- /dev/null +++ b/node_modules/axios/lib/cancel/CancelToken.js @@ -0,0 +1,121 @@ +'use strict'; + +import CanceledError from './CanceledError.js'; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then(cancel => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = onfulfilled => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise(resolve => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } +} + +export default CancelToken; diff --git a/node_modules/axios/lib/cancel/CanceledError.js b/node_modules/axios/lib/cancel/CanceledError.js new file mode 100644 index 0000000..880066e --- /dev/null +++ b/node_modules/axios/lib/cancel/CanceledError.js @@ -0,0 +1,25 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import utils from '../utils.js'; + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ +function CanceledError(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; +} + +utils.inherits(CanceledError, AxiosError, { + __CANCEL__: true +}); + +export default CanceledError; diff --git a/node_modules/axios/lib/cancel/isCancel.js b/node_modules/axios/lib/cancel/isCancel.js new file mode 100644 index 0000000..a444a12 --- /dev/null +++ b/node_modules/axios/lib/cancel/isCancel.js @@ -0,0 +1,5 @@ +'use strict'; + +export default function isCancel(value) { + return !!(value && value.__CANCEL__); +} diff --git a/node_modules/axios/lib/core/Axios.js b/node_modules/axios/lib/core/Axios.js new file mode 100644 index 0000000..2713364 --- /dev/null +++ b/node_modules/axios/lib/core/Axios.js @@ -0,0 +1,225 @@ +'use strict'; + +import utils from './../utils.js'; +import buildURL from '../helpers/buildURL.js'; +import InterceptorManager from './InterceptorManager.js'; +import dispatchRequest from './dispatchRequest.js'; +import mergeConfig from './mergeConfig.js'; +import buildFullPath from './buildFullPath.js'; +import validator from '../helpers/validator.js'; +import AxiosHeaders from './AxiosHeaders.js'; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy; + + Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const {transitional, paramsSerializer, headers} = config; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + if (paramsSerializer != null) { + if (utils.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + } + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils.merge( + headers.common, + headers[config.method] + ); + + headers && utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + (method) => { + delete headers[method]; + } + ); + + config.headers = AxiosHeaders.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + i = 0; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method, + url, + data: (config || {}).data + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url, + data + })); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +export default Axios; diff --git a/node_modules/axios/lib/core/AxiosError.js b/node_modules/axios/lib/core/AxiosError.js new file mode 100644 index 0000000..7141a8c --- /dev/null +++ b/node_modules/axios/lib/core/AxiosError.js @@ -0,0 +1,100 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ +function AxiosError(message, code, config, request, response) { + Error.call(this); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = (new Error()).stack; + } + + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +const prototype = AxiosError.prototype; +const descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED', + 'ERR_NOT_SUPPORT', + 'ERR_INVALID_URL' +// eslint-disable-next-line func-names +].forEach(code => { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError, descriptors); +Object.defineProperty(prototype, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError.from = (error, code, config, request, response, customProps) => { + const axiosError = Object.create(prototype); + + utils.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, prop => { + return prop !== 'isAxiosError'; + }); + + AxiosError.call(axiosError, error.message, code, config, request, response); + + axiosError.cause = error; + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +export default AxiosError; diff --git a/node_modules/axios/lib/core/AxiosHeaders.js b/node_modules/axios/lib/core/AxiosHeaders.js new file mode 100644 index 0000000..558ad8f --- /dev/null +++ b/node_modules/axios/lib/core/AxiosHeaders.js @@ -0,0 +1,298 @@ +'use strict'; + +import utils from '../utils.js'; +import parseHeaders from '../helpers/parseHeaders.js'; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils.isString(value)) return; + + if (utils.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header.trim() + .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach(methodName => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils.findKey(self, lHeader); + + if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite) + } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils.forEach(this, (value, header) => { + const key = utils.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = this[$internals] = (this[$internals] = { + accessors: {} + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + +// reserved names hotfix +utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + } +}); + +utils.freezeMethods(AxiosHeaders); + +export default AxiosHeaders; diff --git a/node_modules/axios/lib/core/InterceptorManager.js b/node_modules/axios/lib/core/InterceptorManager.js new file mode 100644 index 0000000..6657a9d --- /dev/null +++ b/node_modules/axios/lib/core/InterceptorManager.js @@ -0,0 +1,71 @@ +'use strict'; + +import utils from './../utils.js'; + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +export default InterceptorManager; diff --git a/node_modules/axios/lib/core/README.md b/node_modules/axios/lib/core/README.md new file mode 100644 index 0000000..84559ce --- /dev/null +++ b/node_modules/axios/lib/core/README.md @@ -0,0 +1,8 @@ +# axios // core + +The modules found in `core/` should be modules that are specific to the domain logic of axios. These modules would most likely not make sense to be consumed outside of the axios module, as their logic is too specific. Some examples of core modules are: + +- Dispatching requests + - Requests sent via `adapters/` (see lib/adapters/README.md) +- Managing interceptors +- Handling config diff --git a/node_modules/axios/lib/core/buildFullPath.js b/node_modules/axios/lib/core/buildFullPath.js new file mode 100644 index 0000000..b60927c --- /dev/null +++ b/node_modules/axios/lib/core/buildFullPath.js @@ -0,0 +1,21 @@ +'use strict'; + +import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; +import combineURLs from '../helpers/combineURLs.js'; + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} diff --git a/node_modules/axios/lib/core/dispatchRequest.js b/node_modules/axios/lib/core/dispatchRequest.js new file mode 100644 index 0000000..9e306aa --- /dev/null +++ b/node_modules/axios/lib/core/dispatchRequest.js @@ -0,0 +1,81 @@ +'use strict'; + +import transformData from './transformData.js'; +import isCancel from '../cancel/isCancel.js'; +import defaults from '../defaults/index.js'; +import CanceledError from '../cancel/CanceledError.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import adapters from "../adapters/adapters.js"; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +export default function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders.from(config.headers); + + // Transform request data + config.data = transformData.call( + config, + config.transformRequest + ); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders.from(response.headers); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders.from(reason.response.headers); + } + } + + return Promise.reject(reason); + }); +} diff --git a/node_modules/axios/lib/core/mergeConfig.js b/node_modules/axios/lib/core/mergeConfig.js new file mode 100644 index 0000000..e4600e5 --- /dev/null +++ b/node_modules/axios/lib/core/mergeConfig.js @@ -0,0 +1,106 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosHeaders from "./AxiosHeaders.js"; + +const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing; + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +export default function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge.call({caseless}, target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + }; + + utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge = mergeMap[prop] || mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} diff --git a/node_modules/axios/lib/core/settle.js b/node_modules/axios/lib/core/settle.js new file mode 100644 index 0000000..ac905c4 --- /dev/null +++ b/node_modules/axios/lib/core/settle.js @@ -0,0 +1,27 @@ +'use strict'; + +import AxiosError from './AxiosError.js'; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +} diff --git a/node_modules/axios/lib/core/transformData.js b/node_modules/axios/lib/core/transformData.js new file mode 100644 index 0000000..eeb5a8a --- /dev/null +++ b/node_modules/axios/lib/core/transformData.js @@ -0,0 +1,28 @@ +'use strict'; + +import utils from './../utils.js'; +import defaults from '../defaults/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +export default function transformData(fns, response) { + const config = this || defaults; + const context = response || config; + const headers = AxiosHeaders.from(context.headers); + let data = context.data; + + utils.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} diff --git a/node_modules/axios/lib/defaults/index.js b/node_modules/axios/lib/defaults/index.js new file mode 100644 index 0000000..774893a --- /dev/null +++ b/node_modules/axios/lib/defaults/index.js @@ -0,0 +1,156 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import transitionalDefaults from './transitional.js'; +import toFormData from '../helpers/toFormData.js'; +import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; +import platform from '../platform/index.js'; +import formDataToJSON from '../helpers/formDataToJSON.js'; + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + + transitional: transitionalDefaults, + + adapter: ['xhr', 'http'], + + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils.isObject(data); + + if (isObjectPayload && utils.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if (utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? {'files[]': data} : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType ) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } +}; + +utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +export default defaults; diff --git a/node_modules/axios/lib/defaults/transitional.js b/node_modules/axios/lib/defaults/transitional.js new file mode 100644 index 0000000..f891331 --- /dev/null +++ b/node_modules/axios/lib/defaults/transitional.js @@ -0,0 +1,7 @@ +'use strict'; + +export default { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; diff --git a/node_modules/axios/lib/env/README.md b/node_modules/axios/lib/env/README.md new file mode 100644 index 0000000..b41baff --- /dev/null +++ b/node_modules/axios/lib/env/README.md @@ -0,0 +1,3 @@ +# axios // env + +The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/node_modules/axios/lib/env/classes/FormData.js b/node_modules/axios/lib/env/classes/FormData.js new file mode 100644 index 0000000..862adb9 --- /dev/null +++ b/node_modules/axios/lib/env/classes/FormData.js @@ -0,0 +1,2 @@ +import _FormData from 'form-data'; +export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/node_modules/axios/lib/env/data.js b/node_modules/axios/lib/env/data.js new file mode 100644 index 0000000..d4cb5d5 --- /dev/null +++ b/node_modules/axios/lib/env/data.js @@ -0,0 +1 @@ +export const VERSION = "1.6.8"; \ No newline at end of file diff --git a/node_modules/axios/lib/helpers/AxiosTransformStream.js b/node_modules/axios/lib/helpers/AxiosTransformStream.js new file mode 100644 index 0000000..8e8c6d4 --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -0,0 +1,191 @@ +'use strict'; + +import stream from 'stream'; +import utils from '../utils.js'; +import throttle from './throttle.js'; +import speedometer from './speedometer.js'; + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream.Transform{ + constructor(options) { + options = utils.toFlatObject(options, { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15 + }, null, (prop, source) => { + return !utils.isUndefined(source[prop]); + }); + + super({ + readableHighWaterMark: options.chunkSize + }); + + const self = this; + + const internals = this[kInternals] = { + length: options.length, + timeWindow: options.timeWindow, + ticksRate: options.ticksRate, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null + }; + + const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); + + this.on('newListener', event => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + + let bytesNotified = 0; + + internals.updateProgress = throttle(function throttledHandler() { + const totalBytes = internals.length; + const bytesTransferred = internals.bytesSeen; + const progressBytes = bytesTransferred - bytesNotified; + if (!progressBytes || self.destroyed) return; + + const rate = _speedometer(progressBytes); + + bytesNotified = bytesTransferred; + + process.nextTick(() => { + self.emit('progress', { + 'loaded': bytesTransferred, + 'total': totalBytes, + 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, + 'bytes': progressBytes, + 'rate': rate ? rate : undefined, + 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? + (totalBytes - bytesTransferred) / rate : undefined + }); + }); + }, internals.ticksRate); + + const onFinish = () => { + internals.updateProgress(true); + }; + + this.once('end', onFinish); + this.once('error', onFinish); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const self = this; + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = (maxRate / divider); + const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; + + function pushChunk(_chunk, _callback) { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + if (internals.isCaptured) { + internals.updateProgress(); + } + + if (self.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + } + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk(_chunk, chunkRemainder ? () => { + process.nextTick(_callback, null, chunkRemainder); + } : _callback); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } + + setLength(length) { + this[kInternals].length = +length; + return this; + } +} + +export default AxiosTransformStream; diff --git a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js new file mode 100644 index 0000000..b9aa9f0 --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js @@ -0,0 +1,58 @@ +'use strict'; + +import toFormData from './toFormData.js'; + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode); + } : encode; + + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); +}; + +export default AxiosURLSearchParams; diff --git a/node_modules/axios/lib/helpers/HttpStatusCode.js b/node_modules/axios/lib/helpers/HttpStatusCode.js new file mode 100644 index 0000000..b3e7adc --- /dev/null +++ b/node_modules/axios/lib/helpers/HttpStatusCode.js @@ -0,0 +1,71 @@ +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +export default HttpStatusCode; diff --git a/node_modules/axios/lib/helpers/README.md b/node_modules/axios/lib/helpers/README.md new file mode 100644 index 0000000..4ae3419 --- /dev/null +++ b/node_modules/axios/lib/helpers/README.md @@ -0,0 +1,7 @@ +# axios // helpers + +The modules found in `helpers/` should be generic modules that are _not_ specific to the domain logic of axios. These modules could theoretically be published to npm on their own and consumed by other modules or apps. Some examples of generic modules are things like: + +- Browser polyfills +- Managing cookies +- Parsing HTTP headers diff --git a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js new file mode 100644 index 0000000..d1791f0 --- /dev/null +++ b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js @@ -0,0 +1,28 @@ +"use strict"; + +import stream from "stream"; + +class ZlibHeaderTransformStream extends stream.Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +export default ZlibHeaderTransformStream; diff --git a/node_modules/axios/lib/helpers/bind.js b/node_modules/axios/lib/helpers/bind.js new file mode 100644 index 0000000..b3aa83b --- /dev/null +++ b/node_modules/axios/lib/helpers/bind.js @@ -0,0 +1,7 @@ +'use strict'; + +export default function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} diff --git a/node_modules/axios/lib/helpers/buildURL.js b/node_modules/axios/lib/helpers/buildURL.js new file mode 100644 index 0000000..d769fdf --- /dev/null +++ b/node_modules/axios/lib/helpers/buildURL.js @@ -0,0 +1,63 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ +export default function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + const _encode = options && options.encode || encode; + + const serializeFn = options && options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils.isURLSearchParams(params) ? + params.toString() : + new AxiosURLSearchParams(params, options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} diff --git a/node_modules/axios/lib/helpers/callbackify.js b/node_modules/axios/lib/helpers/callbackify.js new file mode 100644 index 0000000..4603bad --- /dev/null +++ b/node_modules/axios/lib/helpers/callbackify.js @@ -0,0 +1,16 @@ +import utils from "../utils.js"; + +const callbackify = (fn, reducer) => { + return utils.isAsyncFn(fn) ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } : fn; +} + +export default callbackify; diff --git a/node_modules/axios/lib/helpers/combineURLs.js b/node_modules/axios/lib/helpers/combineURLs.js new file mode 100644 index 0000000..9f04f02 --- /dev/null +++ b/node_modules/axios/lib/helpers/combineURLs.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} diff --git a/node_modules/axios/lib/helpers/cookies.js b/node_modules/axios/lib/helpers/cookies.js new file mode 100644 index 0000000..d039ac4 --- /dev/null +++ b/node_modules/axios/lib/helpers/cookies.js @@ -0,0 +1,42 @@ +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils.isString(path) && cookie.push('path=' + path); + + utils.isString(domain) && cookie.push('domain=' + domain); + + secure === true && cookie.push('secure'); + + document.cookie = cookie.join('; '); + }, + + read(name) { + const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } + + : + + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {} + }; + diff --git a/node_modules/axios/lib/helpers/deprecatedMethod.js b/node_modules/axios/lib/helpers/deprecatedMethod.js new file mode 100644 index 0000000..9e8fae6 --- /dev/null +++ b/node_modules/axios/lib/helpers/deprecatedMethod.js @@ -0,0 +1,26 @@ +'use strict'; + +/*eslint no-console:0*/ + +/** + * Supply a warning to the developer that a method they are using + * has been deprecated. + * + * @param {string} method The name of the deprecated method + * @param {string} [instead] The alternate method to use if applicable + * @param {string} [docs] The documentation URL to get further details + * + * @returns {void} + */ +export default function deprecatedMethod(method, instead, docs) { + try { + console.warn( + 'DEPRECATED method `' + method + '`.' + + (instead ? ' Use `' + instead + '` instead.' : '') + + ' This method will be removed in a future release.'); + + if (docs) { + console.warn('For more information about usage see ' + docs); + } + } catch (e) { /* Ignore */ } +} diff --git a/node_modules/axios/lib/helpers/formDataToJSON.js b/node_modules/axios/lib/helpers/formDataToJSON.js new file mode 100644 index 0000000..906ce60 --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToJSON.js @@ -0,0 +1,95 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils.isArray(target) ? target.length : name; + + if (isLast) { + if (utils.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { + const obj = {}; + + utils.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +export default formDataToJSON; diff --git a/node_modules/axios/lib/helpers/formDataToStream.js b/node_modules/axios/lib/helpers/formDataToStream.js new file mode 100644 index 0000000..9187e73 --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToStream.js @@ -0,0 +1,111 @@ +import {TextEncoder} from 'util'; +import {Readable} from 'stream'; +import utils from "../utils.js"; +import readBlob from "./readBlob.js"; + +const BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = new TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const {escapeName} = this.constructor; + const isStringValue = utils.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}` + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode(){ + yield this.headers; + + const {value} = this; + + if(utils.isTypedArray(value)) { + yield value; + } else { + yield* readBlob(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace(/[\r\n"]/g, (match) => ({ + '\r' : '%0D', + '\n' : '%0A', + '"' : '%22', + }[match])); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET) + } = options || {}; + + if(!utils.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long') + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}` + } + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return Readable.from((async function *() { + for(const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })()); +}; + +export default formDataToStream; diff --git a/node_modules/axios/lib/helpers/fromDataURI.js b/node_modules/axios/lib/helpers/fromDataURI.js new file mode 100644 index 0000000..eb71d3f --- /dev/null +++ b/node_modules/axios/lib/helpers/fromDataURI.js @@ -0,0 +1,53 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import parseProtocol from './parseProtocol.js'; +import platform from '../platform/index.js'; + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +export default function fromDataURI(uri, asBlob, options) { + const _Blob = options && options.Blob || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], {type: mime}); + } + + return buffer; + } + + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); +} diff --git a/node_modules/axios/lib/helpers/isAbsoluteURL.js b/node_modules/axios/lib/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..4747a45 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} diff --git a/node_modules/axios/lib/helpers/isAxiosError.js b/node_modules/axios/lib/helpers/isAxiosError.js new file mode 100644 index 0000000..da6cd63 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAxiosError.js @@ -0,0 +1,14 @@ +'use strict'; + +import utils from './../utils.js'; + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +export default function isAxiosError(payload) { + return utils.isObject(payload) && (payload.isAxiosError === true); +} diff --git a/node_modules/axios/lib/helpers/isURLSameOrigin.js b/node_modules/axios/lib/helpers/isURLSameOrigin.js new file mode 100644 index 0000000..a8678a4 --- /dev/null +++ b/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -0,0 +1,67 @@ +'use strict'; + +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv ? + +// Standard browser envs have full support of the APIs needed to test +// whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement('a'); + let originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + let href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })(); diff --git a/node_modules/axios/lib/helpers/null.js b/node_modules/axios/lib/helpers/null.js new file mode 100644 index 0000000..b9f82c4 --- /dev/null +++ b/node_modules/axios/lib/helpers/null.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line strict +export default null; diff --git a/node_modules/axios/lib/helpers/parseHeaders.js b/node_modules/axios/lib/helpers/parseHeaders.js new file mode 100644 index 0000000..50af948 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseHeaders.js @@ -0,0 +1,55 @@ +'use strict'; + +import utils from './../utils.js'; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils.toObjectSet([ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +export default rawHeaders => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; diff --git a/node_modules/axios/lib/helpers/parseProtocol.js b/node_modules/axios/lib/helpers/parseProtocol.js new file mode 100644 index 0000000..586ec96 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseProtocol.js @@ -0,0 +1,6 @@ +'use strict'; + +export default function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +} diff --git a/node_modules/axios/lib/helpers/readBlob.js b/node_modules/axios/lib/helpers/readBlob.js new file mode 100644 index 0000000..6de748e --- /dev/null +++ b/node_modules/axios/lib/helpers/readBlob.js @@ -0,0 +1,15 @@ +const {asyncIterator} = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream() + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer() + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +} + +export default readBlob; diff --git a/node_modules/axios/lib/helpers/speedometer.js b/node_modules/axios/lib/helpers/speedometer.js new file mode 100644 index 0000000..3b3c666 --- /dev/null +++ b/node_modules/axios/lib/helpers/speedometer.js @@ -0,0 +1,55 @@ +'use strict'; + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; +} + +export default speedometer; diff --git a/node_modules/axios/lib/helpers/spread.js b/node_modules/axios/lib/helpers/spread.js new file mode 100644 index 0000000..13479cb --- /dev/null +++ b/node_modules/axios/lib/helpers/spread.js @@ -0,0 +1,28 @@ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +export default function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} diff --git a/node_modules/axios/lib/helpers/throttle.js b/node_modules/axios/lib/helpers/throttle.js new file mode 100644 index 0000000..6969df1 --- /dev/null +++ b/node_modules/axios/lib/helpers/throttle.js @@ -0,0 +1,33 @@ +'use strict'; + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + const threshold = 1000 / freq; + let timer = null; + return function throttled(force, args) { + const now = Date.now(); + if (force || now - timestamp > threshold) { + if (timer) { + clearTimeout(timer); + timer = null; + } + timestamp = now; + return fn.apply(null, args); + } + if (!timer) { + timer = setTimeout(() => { + timer = null; + timestamp = Date.now(); + return fn.apply(null, args); + }, threshold - (now - timestamp)); + } + }; +} + +export default throttle; diff --git a/node_modules/axios/lib/helpers/toFormData.js b/node_modules/axios/lib/helpers/toFormData.js new file mode 100644 index 0000000..a41e966 --- /dev/null +++ b/node_modules/axios/lib/helpers/toFormData.js @@ -0,0 +1,219 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored +import PlatformFormData from '../platform/node/classes/FormData.js'; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils.isPlainObject(thing) || utils.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (PlatformFormData || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils.isUndefined(source[option]); + }); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const useBlob = _Blob && utils.isSpecCompliantForm(formData); + + if (!utils.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils.isDate(value)) { + return value.toISOString(); + } + + if (!useBlob && utils.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (value && !path && typeof value === 'object') { + if (utils.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils.isArray(value) && isFlatArray(value)) || + ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)) + )) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + + function build(value, path) { + if (utils.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils.forEach(value, function each(el, key) { + const result = !(utils.isUndefined(el) || el === null) && visitor.call( + formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers + ); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +export default toFormData; diff --git a/node_modules/axios/lib/helpers/toURLEncodedForm.js b/node_modules/axios/lib/helpers/toURLEncodedForm.js new file mode 100644 index 0000000..988a38a --- /dev/null +++ b/node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -0,0 +1,18 @@ +'use strict'; + +import utils from '../utils.js'; +import toFormData from './toFormData.js'; +import platform from '../platform/index.js'; + +export default function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform.isNode && utils.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); +} diff --git a/node_modules/axios/lib/helpers/validator.js b/node_modules/axios/lib/helpers/validator.js new file mode 100644 index 0000000..14b4696 --- /dev/null +++ b/node_modules/axios/lib/helpers/validator.js @@ -0,0 +1,91 @@ +'use strict'; + +import {VERSION} from '../env/data.js'; +import AxiosError from '../core/AxiosError.js'; + +const validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +export default { + assertOptions, + validators +}; diff --git a/node_modules/axios/lib/platform/browser/classes/Blob.js b/node_modules/axios/lib/platform/browser/classes/Blob.js new file mode 100644 index 0000000..6c506c4 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/Blob.js @@ -0,0 +1,3 @@ +'use strict' + +export default typeof Blob !== 'undefined' ? Blob : null diff --git a/node_modules/axios/lib/platform/browser/classes/FormData.js b/node_modules/axios/lib/platform/browser/classes/FormData.js new file mode 100644 index 0000000..f36d31b --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/FormData.js @@ -0,0 +1,3 @@ +'use strict'; + +export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js new file mode 100644 index 0000000..b7dae95 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; +export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/node_modules/axios/lib/platform/browser/index.js b/node_modules/axios/lib/platform/browser/index.js new file mode 100644 index 0000000..08c206f --- /dev/null +++ b/node_modules/axios/lib/platform/browser/index.js @@ -0,0 +1,13 @@ +import URLSearchParams from './classes/URLSearchParams.js' +import FormData from './classes/FormData.js' +import Blob from './classes/Blob.js' + +export default { + isBrowser: true, + classes: { + URLSearchParams, + FormData, + Blob + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] +}; diff --git a/node_modules/axios/lib/platform/common/utils.js b/node_modules/axios/lib/platform/common/utils.js new file mode 100644 index 0000000..56fe79a --- /dev/null +++ b/node_modules/axios/lib/platform/common/utils.js @@ -0,0 +1,47 @@ +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = ( + (product) => { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 + })(typeof navigator !== 'undefined' && navigator.product); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +export { + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv +} diff --git a/node_modules/axios/lib/platform/index.js b/node_modules/axios/lib/platform/index.js new file mode 100644 index 0000000..860ba21 --- /dev/null +++ b/node_modules/axios/lib/platform/index.js @@ -0,0 +1,7 @@ +import platform from './node/index.js'; +import * as utils from './common/utils.js'; + +export default { + ...utils, + ...platform +} diff --git a/node_modules/axios/lib/platform/node/classes/FormData.js b/node_modules/axios/lib/platform/node/classes/FormData.js new file mode 100644 index 0000000..b07f947 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/FormData.js @@ -0,0 +1,3 @@ +import FormData from 'form-data'; + +export default FormData; diff --git a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js new file mode 100644 index 0000000..fba5842 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import url from 'url'; +export default url.URLSearchParams; diff --git a/node_modules/axios/lib/platform/node/index.js b/node_modules/axios/lib/platform/node/index.js new file mode 100644 index 0000000..aef514a --- /dev/null +++ b/node_modules/axios/lib/platform/node/index.js @@ -0,0 +1,12 @@ +import URLSearchParams from './classes/URLSearchParams.js' +import FormData from './classes/FormData.js' + +export default { + isNode: true, + classes: { + URLSearchParams, + FormData, + Blob: typeof Blob !== 'undefined' && Blob || null + }, + protocols: [ 'http', 'https', 'file', 'data' ] +}; diff --git a/node_modules/axios/lib/utils.js b/node_modules/axios/lib/utils.js new file mode 100644 index 0000000..a386b77 --- /dev/null +++ b/node_modules/axios/lib/utils.js @@ -0,0 +1,723 @@ +'use strict'; + +import bind from './helpers/bind.js'; + +// utils is a library of generic helper functions non-specific to axios + +const {toString} = Object.prototype; +const {getPrototypeOf} = Object; + +const kindOf = (cache => thing => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type +} + +const typeOfTest = type => thing => typeof thing === type; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const {isArray} = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = thing => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); +} + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +const isFormData = (thing) => { + let kind; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ) +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => str.trim ? + str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, {allOwnKeys = false} = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +function findKey(obj, key) { + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const {caseless} = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + } + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, {allOwnKeys}= {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, {allOwnKeys}); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); +} + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +} + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +} + + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +} + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = (TypedArray => { + // eslint-disable-next-line func-names + return thing => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + + const iterator = generator.call(obj); + + let result; + + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +} + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +} + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +} + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); +} + +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach(value => { + obj[value] = true; + }); + } + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +} + +const noop = () => {} + +const toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; +} + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz' + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +} + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + while (size--) { + str += alphabet[Math.random() * length|0] + } + + return str; +} + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); +} + +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + if(!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + } + + return visit(obj, 0); +} + +const isAsyncFn = kindOfTest('AsyncFunction'); + +const isThenable = (thing) => + thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); + +export default { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable +}; diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json new file mode 100644 index 0000000..5b3f7fb --- /dev/null +++ b/node_modules/axios/package.json @@ -0,0 +1,218 @@ +{ + "name": "axios", + "version": "1.6.8", + "description": "Promise based HTTP client for the browser and node.js", + "main": "index.js", + "exports": { + ".": { + "types": { + "require": "./index.d.cts", + "default": "./index.d.ts" + }, + "browser": { + "require": "./dist/browser/axios.cjs", + "default": "./index.js" + }, + "default": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + } + }, + "./lib/adapters/http.js": "./lib/adapters/http.js", + "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/*": "./lib/*", + "./unsafe/core/settle.js": "./lib/core/settle.js", + "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", + "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", + "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", + "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", + "./unsafe/adapters/http.js": "./lib/adapters/http.js", + "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/utils.js": "./lib/utils.js", + "./package.json": "./package.json" + }, + "type": "module", + "types": "index.d.ts", + "scripts": { + "test": "npm run test:eslint && npm run test:mocha && npm run test:karma && npm run test:dtslint && npm run test:exports", + "test:eslint": "node bin/ssl_hotfix.js eslint lib/**/*.js", + "test:dtslint": "dtslint --localTs node_modules/typescript/lib", + "test:mocha": "node bin/ssl_hotfix.js mocha test/unit/**/*.js --timeout 30000 --exit", + "test:exports": "node bin/ssl_hotfix.js mocha test/module/test.js --timeout 30000 --exit", + "test:karma": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: karma start karma.conf.cjs --single-run", + "test:karma:firefox": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: Browsers=Firefox karma start karma.conf.cjs --single-run", + "test:karma:server": "node bin/ssl_hotfix.js cross-env karma start karma.conf.cjs", + "test:build:version": "node ./bin/check-build-version.js", + "start": "node ./sandbox/server.js", + "preversion": "gulp version", + "version": "npm run build && git add dist && git add package.json", + "prepublishOnly": "npm run test:build:version", + "postpublish": "git push && git push --tags", + "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", + "examples": "node ./examples/server.js", + "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "fix": "eslint --fix lib/**/*.js", + "prepare": "husky install && npm run prepare:hooks", + "prepare:hooks": "npx husky set .husky/commit-msg \"npx commitlint --edit $1\"", + "release:dry": "release-it --dry-run --no-npm", + "release:info": "release-it --release-version", + "release:beta:no-npm": "release-it --preRelease=beta --no-npm", + "release:beta": "release-it --preRelease=beta", + "release:no-npm": "release-it --no-npm", + "release:changelog:fix": "node ./bin/injectContributorsList.js && git add CHANGELOG.md", + "release": "release-it" + }, + "repository": { + "type": "git", + "url": "https://github.com/axios/axios.git" + }, + "keywords": [ + "xhr", + "http", + "ajax", + "promise", + "node" + ], + "author": "Matt Zabriskie", + "license": "MIT", + "bugs": { + "url": "https://github.com/axios/axios/issues" + }, + "homepage": "https://axios-http.com", + "devDependencies": { + "@babel/core": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@commitlint/cli": "^17.8.1", + "@commitlint/config-conventional": "^17.8.1", + "@release-it/conventional-changelog": "^5.1.1", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-multi-entry": "^4.1.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "abortcontroller-polyfill": "^1.7.5", + "auto-changelog": "^2.4.0", + "body-parser": "^1.20.2", + "chalk": "^5.3.0", + "coveralls": "^3.1.1", + "cross-env": "^7.0.3", + "dev-null": "^0.1.1", + "dtslint": "^4.2.1", + "es6-promise": "^4.2.8", + "eslint": "^8.56.0", + "express": "^4.18.2", + "formdata-node": "^5.0.1", + "formidable": "^2.1.2", + "fs-extra": "^10.1.0", + "get-stream": "^3.0.0", + "gulp": "^4.0.2", + "gzip-size": "^7.0.0", + "handlebars": "^4.7.8", + "husky": "^8.0.3", + "istanbul-instrumenter-loader": "^3.0.1", + "jasmine-core": "^2.99.1", + "karma": "^6.3.17", + "karma-chrome-launcher": "^3.2.0", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^1.1.2", + "karma-jasmine-ajax": "^0.1.13", + "karma-rollup-preprocessor": "^7.0.8", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^4.3.6", + "karma-sinon": "^1.0.5", + "karma-sourcemap-loader": "^0.3.8", + "memoizee": "^0.4.15", + "minimist": "^1.2.8", + "mocha": "^10.3.0", + "multer": "^1.4.4", + "pretty-bytes": "^6.1.1", + "release-it": "^15.11.0", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-terser": "^7.0.2", + "sinon": "^4.5.0", + "stream-throttle": "^0.1.3", + "string-replace-async": "^3.0.2", + "terser-webpack-plugin": "^4.2.3", + "typescript": "^4.9.5" + }, + "browser": { + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "bundlesize": [ + { + "path": "./dist/axios.min.js", + "threshold": "5kB" + } + ], + "contributors": [ + "Matt Zabriskie (https://github.com/mzabriskie)", + "Nick Uraltsev (https://github.com/nickuraltsev)", + "Jay (https://github.com/jasonsaayman)", + "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", + "Emily Morehouse (https://github.com/emilyemorehouse)", + "Rubén Norte (https://github.com/rubennorte)", + "Justin Beckwith (https://github.com/JustinBeckwith)", + "Martti Laine (https://github.com/codeclown)", + "Xianming Zhong (https://github.com/chinesedfan)", + "Rikki Gibson (https://github.com/RikkiGibson)", + "Remco Haszing (https://github.com/remcohaszing)", + "Yasu Flores (https://github.com/yasuf)", + "Ben Carp (https://github.com/carpben)" + ], + "sideEffects": false, + "release-it": { + "git": { + "commitMessage": "chore(release): v${version}", + "push": true, + "commit": true, + "tag": true, + "requireCommits": false, + "requireCleanWorkingDir": false + }, + "github": { + "release": true, + "draft": true + }, + "npm": { + "publish": false, + "ignoreVersion": false + }, + "plugins": { + "@release-it/conventional-changelog": { + "preset": "angular", + "infile": "CHANGELOG.md", + "header": "# Changelog" + } + }, + "hooks": { + "before:init": "npm test", + "after:bump": "gulp version --bump ${version} && npm run build && npm run test:build:version && git add ./dist && git add ./package-lock.json", + "before:release": "npm run release:changelog:fix", + "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." + } + }, + "commitlint": { + "rules": { + "header-max-length": [ + 2, + "always", + 130 + ] + }, + "extends": [ + "@commitlint/config-conventional" + ] + } +} \ No newline at end of file diff --git a/node_modules/combined-stream/License b/node_modules/combined-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/node_modules/combined-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +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/node_modules/combined-stream/Readme.md b/node_modules/combined-stream/Readme.md new file mode 100644 index 0000000..9e367b5 --- /dev/null +++ b/node_modules/combined-stream/Readme.md @@ -0,0 +1,138 @@ +# combined-stream + +A stream that emits multiple other streams one after another. + +**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. + +- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. + +- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. + +## Installation + +``` bash +npm install combined-stream +``` + +## Usage + +Here is a simple example that shows how you can use combined-stream to combine +two files into one: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +While the example above works great, it will pause all source streams until +they are needed. If you don't want that to happen, you can set `pauseStreams` +to `false`: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create({pauseStreams: false}); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +However, what if you don't have all the source streams yet, or you don't want +to allocate the resources (file descriptors, memory, etc.) for them right away? +Well, in that case you can simply provide a callback that supplies the stream +by calling a `next()` function: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(function(next) { + next(fs.createReadStream('file1.txt')); +}); +combinedStream.append(function(next) { + next(fs.createReadStream('file2.txt')); +}); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +## API + +### CombinedStream.create([options]) + +Returns a new combined stream object. Available options are: + +* `maxDataSize` +* `pauseStreams` + +The effect of those options is described below. + +### combinedStream.pauseStreams = `true` + +Whether to apply back pressure to the underlaying streams. If set to `false`, +the underlaying streams will never be paused. If set to `true`, the +underlaying streams will be paused right after being appended, as well as when +`delayedStream.pipe()` wants to throttle. + +### combinedStream.maxDataSize = `2 * 1024 * 1024` + +The maximum amount of bytes (or characters) to buffer for all source streams. +If this value is exceeded, `combinedStream` emits an `'error'` event. + +### combinedStream.dataSize = `0` + +The amount of bytes (or characters) currently buffered by `combinedStream`. + +### combinedStream.append(stream) + +Appends the given `stream` to the combinedStream object. If `pauseStreams` is +set to `true, this stream will also be paused right away. + +`streams` can also be a function that takes one parameter called `next`. `next` +is a function that must be invoked in order to provide the `next` stream, see +example above. + +Regardless of how the `stream` is appended, combined-stream always attaches an +`'error'` listener to it, so you don't have to do that manually. + +Special case: `stream` can also be a String or Buffer. + +### combinedStream.write(data) + +You should not call this, `combinedStream` takes care of piping the appended +streams into itself for you. + +### combinedStream.resume() + +Causes `combinedStream` to start drain the streams it manages. The function is +idempotent, and also emits a `'resume'` event each time which usually goes to +the stream that is currently being drained. + +### combinedStream.pause(); + +If `combinedStream.pauseStreams` is set to `false`, this does nothing. +Otherwise a `'pause'` event is emitted, this goes to the stream that is +currently being drained, so you can use it to apply back pressure. + +### combinedStream.end(); + +Sets `combinedStream.writable` to false, emits an `'end'` event, and removes +all streams from the queue. + +### combinedStream.destroy(); + +Same as `combinedStream.end()`, except it emits a `'close'` event instead of +`'end'`. + +## License + +combined-stream is licensed under the MIT license. diff --git a/node_modules/combined-stream/lib/combined_stream.js b/node_modules/combined-stream/lib/combined_stream.js new file mode 100644 index 0000000..125f097 --- /dev/null +++ b/node_modules/combined-stream/lib/combined_stream.js @@ -0,0 +1,208 @@ +var util = require('util'); +var Stream = require('stream').Stream; +var DelayedStream = require('delayed-stream'); + +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; + + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); + +CombinedStream.create = function(options) { + var combinedStream = new this(); + + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; + } + + return combinedStream; +}; + +CombinedStream.isStreamLike = function(stream) { + return (typeof stream !== 'function') + && (typeof stream !== 'string') + && (typeof stream !== 'boolean') + && (typeof stream !== 'number') + && (!Buffer.isBuffer(stream)); +}; + +CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams, + }); + stream.on('data', this._checkDataSize.bind(this)); + stream = newStream; + } + + this._handleErrors(stream); + + if (this.pauseStreams) { + stream.pause(); + } + } + + this._streams.push(stream); + return this; +}; + +CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; +}; + +CombinedStream.prototype._getNext = function() { + this._currentStream = null; + + if (this._insideLoop) { + this._pendingNext = true; + return; // defer call + } + + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } +}; + +CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); + + + if (typeof stream == 'undefined') { + this.end(); + return; + } + + if (typeof stream !== 'function') { + this._pipeNext(stream); + return; + } + + var getStream = stream; + getStream(function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('data', this._checkDataSize.bind(this)); + this._handleErrors(stream); + } + + this._pipeNext(stream); + }.bind(this)); +}; + +CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; + + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('end', this._getNext.bind(this)); + stream.pipe(this, {end: false}); + return; + } + + var value = stream; + this.write(value); + this._getNext(); +}; + +CombinedStream.prototype._handleErrors = function(stream) { + var self = this; + stream.on('error', function(err) { + self._emitError(err); + }); +}; + +CombinedStream.prototype.write = function(data) { + this.emit('data', data); +}; + +CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); + this.emit('pause'); +}; + +CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; + +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; + +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; + +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; + +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } + + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; + +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; + + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } + + self.dataSize += stream.dataSize; + }); + + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } +}; + +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; diff --git a/node_modules/combined-stream/package.json b/node_modules/combined-stream/package.json new file mode 100644 index 0000000..6982b6d --- /dev/null +++ b/node_modules/combined-stream/package.json @@ -0,0 +1,25 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "combined-stream", + "description": "A stream that emits multiple other streams one after another.", + "version": "1.0.8", + "homepage": "https://github.com/felixge/node-combined-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-combined-stream.git" + }, + "main": "./lib/combined_stream", + "scripts": { + "test": "node test/run.js" + }, + "engines": { + "node": ">= 0.8" + }, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "devDependencies": { + "far": "~0.0.7" + }, + "license": "MIT" +} diff --git a/node_modules/combined-stream/yarn.lock b/node_modules/combined-stream/yarn.lock new file mode 100644 index 0000000..7edf418 --- /dev/null +++ b/node_modules/combined-stream/yarn.lock @@ -0,0 +1,17 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +far@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" + dependencies: + oop "0.0.3" + +oop@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/node_modules/delayed-stream/.npmignore b/node_modules/delayed-stream/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/node_modules/delayed-stream/.npmignore @@ -0,0 +1 @@ +test diff --git a/node_modules/delayed-stream/License b/node_modules/delayed-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/node_modules/delayed-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +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/node_modules/delayed-stream/Makefile b/node_modules/delayed-stream/Makefile new file mode 100644 index 0000000..b4ff85a --- /dev/null +++ b/node_modules/delayed-stream/Makefile @@ -0,0 +1,7 @@ +SHELL := /bin/bash + +test: + @./test/run.js + +.PHONY: test + diff --git a/node_modules/delayed-stream/Readme.md b/node_modules/delayed-stream/Readme.md new file mode 100644 index 0000000..aca36f9 --- /dev/null +++ b/node_modules/delayed-stream/Readme.md @@ -0,0 +1,141 @@ +# delayed-stream + +Buffers events from a stream until you are ready to handle them. + +## Installation + +``` bash +npm install delayed-stream +``` + +## Usage + +The following example shows how to write a http echo server that delays its +response by 1000 ms. + +``` javascript +var DelayedStream = require('delayed-stream'); +var http = require('http'); + +http.createServer(function(req, res) { + var delayed = DelayedStream.create(req); + + setTimeout(function() { + res.writeHead(200); + delayed.pipe(res); + }, 1000); +}); +``` + +If you are not using `Stream#pipe`, you can also manually release the buffered +events by calling `delayedStream.resume()`: + +``` javascript +var delayed = DelayedStream.create(req); + +setTimeout(function() { + // Emit all buffered events and resume underlaying source + delayed.resume(); +}, 1000); +``` + +## Implementation + +In order to use this meta stream properly, here are a few things you should +know about the implementation. + +### Event Buffering / Proxying + +All events of the `source` stream are hijacked by overwriting the `source.emit` +method. Until node implements a catch-all event listener, this is the only way. + +However, delayed-stream still continues to emit all events it captures on the +`source`, regardless of whether you have released the delayed stream yet or +not. + +Upon creation, delayed-stream captures all `source` events and stores them in +an internal event buffer. Once `delayedStream.release()` is called, all +buffered events are emitted on the `delayedStream`, and the event buffer is +cleared. After that, delayed-stream merely acts as a proxy for the underlaying +source. + +### Error handling + +Error events on `source` are buffered / proxied just like any other events. +However, `delayedStream.create` attaches a no-op `'error'` listener to the +`source`. This way you only have to handle errors on the `delayedStream` +object, rather than in two places. + +### Buffer limits + +delayed-stream provides a `maxDataSize` property that can be used to limit +the amount of data being buffered. In order to protect you from bad `source` +streams that don't react to `source.pause()`, this feature is enabled by +default. + +## API + +### DelayedStream.create(source, [options]) + +Returns a new `delayedStream`. Available options are: + +* `pauseStream` +* `maxDataSize` + +The description for those properties can be found below. + +### delayedStream.source + +The `source` stream managed by this object. This is useful if you are +passing your `delayedStream` around, and you still want to access properties +on the `source` object. + +### delayedStream.pauseStream = true + +Whether to pause the underlaying `source` when calling +`DelayedStream.create()`. Modifying this property afterwards has no effect. + +### delayedStream.maxDataSize = 1024 * 1024 + +The amount of data to buffer before emitting an `error`. + +If the underlaying source is emitting `Buffer` objects, the `maxDataSize` +refers to bytes. + +If the underlaying source is emitting JavaScript strings, the size refers to +characters. + +If you know what you are doing, you can set this property to `Infinity` to +disable this feature. You can also modify this property during runtime. + +### delayedStream.dataSize = 0 + +The amount of data buffered so far. + +### delayedStream.readable + +An ECMA5 getter that returns the value of `source.readable`. + +### delayedStream.resume() + +If the `delayedStream` has not been released so far, `delayedStream.release()` +is called. + +In either case, `source.resume()` is called. + +### delayedStream.pause() + +Calls `source.pause()`. + +### delayedStream.pipe(dest) + +Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. + +### delayedStream.release() + +Emits and clears all events that have been buffered up so far. This does not +resume the underlaying source, use `delayedStream.resume()` instead. + +## License + +delayed-stream is licensed under the MIT license. diff --git a/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/delayed-stream/lib/delayed_stream.js new file mode 100644 index 0000000..b38fc85 --- /dev/null +++ b/node_modules/delayed-stream/lib/delayed_stream.js @@ -0,0 +1,107 @@ +var Stream = require('stream').Stream; +var util = require('util'); + +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; +} +util.inherits(DelayedStream, Stream); + +DelayedStream.create = function(source, options) { + var delayedStream = new this(); + + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + + delayedStream.source = source; + + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); + } + + return delayedStream; +}; + +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } +}); + +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; + +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } + + this.source.resume(); +}; + +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; + +DelayedStream.prototype.release = function() { + this._released = true; + + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; + +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; + +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } + + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } + + this._bufferedEvents.push(args); +}; + +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } + + if (this.dataSize <= this.maxDataSize) { + return; + } + + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); +}; diff --git a/node_modules/delayed-stream/package.json b/node_modules/delayed-stream/package.json new file mode 100644 index 0000000..eea3291 --- /dev/null +++ b/node_modules/delayed-stream/package.json @@ -0,0 +1,27 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "contributors": [ + "Mike Atkins " + ], + "name": "delayed-stream", + "description": "Buffers events from a stream until you are ready to handle them.", + "license": "MIT", + "version": "1.0.0", + "homepage": "https://github.com/felixge/node-delayed-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-delayed-stream.git" + }, + "main": "./lib/delayed_stream", + "engines": { + "node": ">=0.4.0" + }, + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "fake": "0.2.0", + "far": "0.0.1" + } +} diff --git a/node_modules/follow-redirects/LICENSE b/node_modules/follow-redirects/LICENSE new file mode 100644 index 0000000..742cbad --- /dev/null +++ b/node_modules/follow-redirects/LICENSE @@ -0,0 +1,18 @@ +Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh + +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/node_modules/follow-redirects/README.md b/node_modules/follow-redirects/README.md new file mode 100644 index 0000000..eb869a6 --- /dev/null +++ b/node_modules/follow-redirects/README.md @@ -0,0 +1,155 @@ +## Follow Redirects + +Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects. + +[![npm version](https://img.shields.io/npm/v/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Build Status](https://github.com/follow-redirects/follow-redirects/workflows/CI/badge.svg)](https://github.com/follow-redirects/follow-redirects/actions) +[![Coverage Status](https://coveralls.io/repos/follow-redirects/follow-redirects/badge.svg?branch=master)](https://coveralls.io/r/follow-redirects/follow-redirects?branch=master) +[![npm downloads](https://img.shields.io/npm/dm/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Sponsor on GitHub](https://img.shields.io/static/v1?label=Sponsor&message=%F0%9F%92%96&logo=GitHub)](https://github.com/sponsors/RubenVerborgh) + +`follow-redirects` provides [request](https://nodejs.org/api/http.html#http_http_request_options_callback) and [get](https://nodejs.org/api/http.html#http_http_get_options_callback) + methods that behave identically to those found on the native [http](https://nodejs.org/api/http.html#http_http_request_options_callback) and [https](https://nodejs.org/api/https.html#https_https_request_options_callback) + modules, with the exception that they will seamlessly follow redirects. + +```javascript +const { http, https } = require('follow-redirects'); + +http.get('http://bit.ly/900913', response => { + response.on('data', chunk => { + console.log(chunk); + }); +}).on('error', err => { + console.error(err); +}); +``` + +You can inspect the final redirected URL through the `responseUrl` property on the `response`. +If no redirection happened, `responseUrl` is the original request URL. + +```javascript +const request = https.request({ + host: 'bitly.com', + path: '/UHfDGO', +}, response => { + console.log(response.responseUrl); + // 'http://duckduckgo.com/robots.txt' +}); +request.end(); +``` + +## Options +### Global options +Global options are set directly on the `follow-redirects` module: + +```javascript +const followRedirects = require('follow-redirects'); +followRedirects.maxRedirects = 10; +followRedirects.maxBodyLength = 20 * 1024 * 1024; // 20 MB +``` + +The following global options are supported: + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +### Per-request options +Per-request options are set by passing an `options` object: + +```javascript +const url = require('url'); +const { http, https } = require('follow-redirects'); + +const options = url.parse('http://bit.ly/900913'); +options.maxRedirects = 10; +options.beforeRedirect = (options, response, request) => { + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + + // response.headers = the redirect response headers + // response.statusCode = the redirect response code (eg. 301, 307, etc.) + + // request.url = the requested URL that resulted in a redirect + // request.headers = the headers in the request that resulted in a redirect + // request.method = the method of the request that resulted in a redirect + if (options.hostname === "example.com") { + options.auth = "user:password"; + } +}; +http.request(options); +``` + +In addition to the [standard HTTP](https://nodejs.org/api/http.html#http_http_request_options_callback) and [HTTPS options](https://nodejs.org/api/https.html#https_https_request_options_callback), +the following per-request options are supported: +- `followRedirects` (default: `true`) – whether redirects should be followed. + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +- `beforeRedirect` (default: `undefined`) – optionally change the request `options` on redirects, or abort the request by throwing an error. + +- `agents` (default: `undefined`) – sets the `agent` option per protocol, since HTTP and HTTPS use different agents. Example value: `{ http: new http.Agent(), https: new https.Agent() }` + +- `trackRedirects` (default: `false`) – whether to store the redirected response details into the `redirects` array on the response object. + + +### Advanced usage +By default, `follow-redirects` will use the Node.js default implementations +of [`http`](https://nodejs.org/api/http.html) +and [`https`](https://nodejs.org/api/https.html). +To enable features such as caching and/or intermediate request tracking, +you might instead want to wrap `follow-redirects` around custom protocol implementations: + +```javascript +const { http, https } = require('follow-redirects').wrap({ + http: require('your-custom-http'), + https: require('your-custom-https'), +}); +``` + +Such custom protocols only need an implementation of the `request` method. + +## Browser Usage + +Due to the way the browser works, +the `http` and `https` browser equivalents perform redirects by default. + +By requiring `follow-redirects` this way: +```javascript +const http = require('follow-redirects/http'); +const https = require('follow-redirects/https'); +``` +you can easily tell webpack and friends to replace +`follow-redirect` by the built-in versions: + +```json +{ + "follow-redirects/http" : "http", + "follow-redirects/https" : "https" +} +``` + +## Contributing + +Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues) + detailing your proposal before you invest your valuable time. Additional features and bug fixes should be accompanied + by tests. You can run the test suite locally with a simple `npm test` command. + +## Debug Logging + +`follow-redirects` uses the excellent [debug](https://www.npmjs.com/package/debug) for logging. To turn on logging + set the environment variable `DEBUG=follow-redirects` for debug output from just this module. When running the test + suite it is sometimes advantageous to set `DEBUG=*` to see output from the express server as well. + +## Authors + +- [Ruben Verborgh](https://ruben.verborgh.org/) +- [Olivier Lalonde](mailto:olalonde@gmail.com) +- [James Talmage](mailto:james@talmage.io) + +## License + +[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE) diff --git a/node_modules/follow-redirects/debug.js b/node_modules/follow-redirects/debug.js new file mode 100644 index 0000000..decb77d --- /dev/null +++ b/node_modules/follow-redirects/debug.js @@ -0,0 +1,15 @@ +var debug; + +module.exports = function () { + if (!debug) { + try { + /* eslint global-require: off */ + debug = require("debug")("follow-redirects"); + } + catch (error) { /* */ } + if (typeof debug !== "function") { + debug = function () { /* */ }; + } + } + debug.apply(null, arguments); +}; diff --git a/node_modules/follow-redirects/http.js b/node_modules/follow-redirects/http.js new file mode 100644 index 0000000..695e356 --- /dev/null +++ b/node_modules/follow-redirects/http.js @@ -0,0 +1 @@ +module.exports = require("./").http; diff --git a/node_modules/follow-redirects/https.js b/node_modules/follow-redirects/https.js new file mode 100644 index 0000000..d21c921 --- /dev/null +++ b/node_modules/follow-redirects/https.js @@ -0,0 +1 @@ +module.exports = require("./").https; diff --git a/node_modules/follow-redirects/index.js b/node_modules/follow-redirects/index.js new file mode 100644 index 0000000..c649cab --- /dev/null +++ b/node_modules/follow-redirects/index.js @@ -0,0 +1,672 @@ +var url = require("url"); +var URL = url.URL; +var http = require("http"); +var https = require("https"); +var Writable = require("stream").Writable; +var assert = require("assert"); +var debug = require("./debug"); + +// Whether to use the native URL object or the legacy url module +var useNativeURL = false; +try { + assert(new URL()); +} +catch (error) { + useNativeURL = error.code === "ERR_INVALID_URL"; +} + +// URL fields to preserve in copy operations +var preservedUrlFields = [ + "auth", + "host", + "hostname", + "href", + "path", + "pathname", + "port", + "protocol", + "query", + "search", + "hash", +]; + +// Create handlers that pass events from native requests +var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; +var eventHandlers = Object.create(null); +events.forEach(function (event) { + eventHandlers[event] = function (arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; +}); + +// Error types with codes +var InvalidUrlError = createErrorType( + "ERR_INVALID_URL", + "Invalid URL", + TypeError +); +var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" +); +var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded", + RedirectionError +); +var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" +); +var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" +); + +// istanbul ignore next +var destroy = Writable.prototype.destroy || noop; + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + try { + self._processResponse(response); + } + catch (cause) { + self.emit("error", cause instanceof RedirectionError ? + cause : new RedirectionError({ cause: cause })); + } + }; + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +RedirectableRequest.prototype.abort = function () { + destroyRequest(this._currentRequest); + this._currentRequest.abort(); + this.emit("abort"); +}; + +RedirectableRequest.prototype.destroy = function (error) { + destroyRequest(this._currentRequest, error); + destroy.call(this, error); + return this; +}; + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Writing is not allowed if end has been called + if (this._ending) { + throw new WriteAfterEndError(); + } + + // Validate input and shift parameters if necessary + if (!isString(data) && !isBuffer(data)) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (isFunction(data)) { + callback = data; + data = encoding = null; + } + else if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Write data if needed and end + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } + else { + var self = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function () { + self._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } +}; + +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; + +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; + +// Global timeout for all underlying requests +RedirectableRequest.prototype.setTimeout = function (msecs, callback) { + var self = this; + + // Destroys the socket on timeout + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } + + // Sets up a timer to trigger a timeout event + function startTimer(socket) { + if (self._timeout) { + clearTimeout(self._timeout); + } + self._timeout = setTimeout(function () { + self.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } + + // Stops a timeout from triggering + function clearTimer() { + // Clear the timeout + if (self._timeout) { + clearTimeout(self._timeout); + self._timeout = null; + } + + // Clean up all attached listeners + self.removeListener("abort", clearTimer); + self.removeListener("error", clearTimer); + self.removeListener("response", clearTimer); + self.removeListener("close", clearTimer); + if (callback) { + self.removeListener("timeout", callback); + } + if (!self.socket) { + self._currentRequest.removeListener("socket", startTimer); + } + } + + // Attach callback if passed + if (callback) { + this.on("timeout", callback); + } + + // Start the timer if or when the socket is opened + if (this.socket) { + startTimer(this.socket); + } + else { + this._currentRequest.once("socket", startTimer); + } + + // Clean up on events + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); + this.on("close", clearTimer); + + return this; +}; + +// Proxy all other public ClientRequest methods +[ + "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); + +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); + +RedirectableRequest.prototype._sanitizeOptions = function (options) { + // Ensure headers are always present + if (!options.headers) { + options.headers = {}; + } + + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } +}; + + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + throw new TypeError("Unsupported protocol " + protocol); + } + + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.slice(0, -1); + this._options.agent = this._options.agents[scheme]; + } + + // Create the native request and set up its event handlers + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + request._redirectable = this; + for (var event of events) { + request.on(event, eventHandlers[event]); + } + + // RFC7230§5.3.1: When making a request directly to an origin server, […] + // a client MUST send only the absolute path […] as the request-target. + this._currentUrl = /^\//.test(this._options.path) ? + url.format(this._options) : + // When making a request to a proxy, […] + // a client MUST send the target URI in absolute-form […]. + this._options.path; + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end + var i = 0; + var self = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + // Only write if this request has not been redirected yet + /* istanbul ignore else */ + if (request === self._currentRequest) { + // Report any write errors + /* istanbul ignore if */ + if (error) { + self.emit("error", error); + } + // Write the next buffer if there are still left + else if (i < buffers.length) { + var buffer = buffers[i++]; + /* istanbul ignore else */ + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } + // End the request if `end` has been called on us + else if (self._ended) { + request.end(); + } + } + }()); + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: statusCode, + }); + } + + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + + // If the response is not a redirect; return it as-is + var location = response.headers.location; + if (!location || this._options.followRedirects === false || + statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + + // Clean up + this._requestBodyBuffers = []; + return; + } + + // The response is a redirect, so abort the current request + destroyRequest(this._currentRequest); + // Discard the remainder of the response to avoid waiting for data + response.destroy(); + + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + throw new TooManyRedirectsError(); + } + + // Store the request headers if applicable + var requestHeaders; + var beforeRedirect = this._options.beforeRedirect; + if (beforeRedirect) { + requestHeaders = Object.assign({ + // The Host header was set by nativeProtocol.request + Host: response.req.getHeader("host"), + }, this._options.headers); + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe, […] + // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change + // the request method from POST to GET for the subsequent request. + var method = this._options.method; + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || + // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } + + // Drop the Host header, as the redirect might lead to a different host + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + + // If the redirect is relative, carry over the host of the last request + var currentUrlParts = parseUrl(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location) ? this._currentUrl : + url.format(Object.assign(currentUrlParts, { host: currentHost })); + + // Create the redirected request + var redirectUrl = resolveUrl(location, currentUrl); + debug("redirecting to", redirectUrl.href); + this._isRedirect = true; + spreadUrlObject(redirectUrl, this._options); + + // Drop confidential headers when redirecting to a less secure protocol + // or to a different domain that is not a superdomain + if (redirectUrl.protocol !== currentUrlParts.protocol && + redirectUrl.protocol !== "https:" || + redirectUrl.host !== currentHost && + !isSubdomain(redirectUrl.host, currentHost)) { + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); + } + + // Evaluate the beforeRedirect callback + if (isFunction(beforeRedirect)) { + var responseDetails = { + headers: response.headers, + statusCode: statusCode, + }; + var requestDetails = { + url: currentUrl, + method: method, + headers: requestHeaders, + }; + beforeRedirect(this._options, responseDetails, requestDetails); + this._sanitizeOptions(this._options); + } + + // Perform the redirected request + this._performRequest(); +}; + +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; + + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes a request, following redirects + function request(input, options, callback) { + // Parse parameters, ensuring that input is an object + if (isURL(input)) { + input = spreadUrlObject(input); + } + else if (isString(input)) { + input = spreadUrlObject(parseUrl(input)); + } + else { + callback = options; + options = validateUrl(input); + input = { protocol: protocol }; + } + if (isFunction(options)) { + callback = options; + options = null; + } + + // Set defaults + options = Object.assign({ + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, input, options); + options.nativeProtocols = nativeProtocols; + if (!isString(options.host) && !isString(options.hostname)) { + options.hostname = "::1"; + } + + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } + + // Executes a GET request, following redirects + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } + + // Expose the properties on the wrapped protocol + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true }, + }); + }); + return exports; +} + +function noop() { /* empty */ } + +function parseUrl(input) { + var parsed; + /* istanbul ignore else */ + if (useNativeURL) { + parsed = new URL(input); + } + else { + // Ensure the URL is valid and absolute + parsed = validateUrl(url.parse(input)); + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + } + return parsed; +} + +function resolveUrl(relative, base) { + /* istanbul ignore next */ + return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative)); +} + +function validateUrl(input) { + if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { + throw new InvalidUrlError({ input: input.href || input }); + } + if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { + throw new InvalidUrlError({ input: input.href || input }); + } + return input; +} + +function spreadUrlObject(urlObject, target) { + var spread = target || {}; + for (var key of preservedUrlFields) { + spread[key] = urlObject[key]; + } + + // Fix IPv6 hostname + if (spread.hostname.startsWith("[")) { + spread.hostname = spread.hostname.slice(1, -1); + } + // Ensure port is a number + if (spread.port !== "") { + spread.port = Number(spread.port); + } + // Concatenate path + spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; + + return spread; +} + +function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; + } + } + return (lastValue === null || typeof lastValue === "undefined") ? + undefined : String(lastValue).trim(); +} + +function createErrorType(code, message, baseClass) { + // Create constructor + function CustomError(properties) { + Error.captureStackTrace(this, this.constructor); + Object.assign(this, properties || {}); + this.code = code; + this.message = this.cause ? message + ": " + this.cause.message : message; + } + + // Attach constructor and set default properties + CustomError.prototype = new (baseClass || Error)(); + Object.defineProperties(CustomError.prototype, { + constructor: { + value: CustomError, + enumerable: false, + }, + name: { + value: "Error [" + code + "]", + enumerable: false, + }, + }); + return CustomError; +} + +function destroyRequest(request, error) { + for (var event of events) { + request.removeListener(event, eventHandlers[event]); + } + request.on("error", noop); + request.destroy(error); +} + +function isSubdomain(subdomain, domain) { + assert(isString(subdomain) && isString(domain)); + var dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); +} + +function isString(value) { + return typeof value === "string" || value instanceof String; +} + +function isFunction(value) { + return typeof value === "function"; +} + +function isBuffer(value) { + return typeof value === "object" && ("length" in value); +} + +function isURL(value) { + return URL && value instanceof URL; +} + +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; diff --git a/node_modules/follow-redirects/package.json b/node_modules/follow-redirects/package.json new file mode 100644 index 0000000..149943b --- /dev/null +++ b/node_modules/follow-redirects/package.json @@ -0,0 +1,58 @@ +{ + "name": "follow-redirects", + "version": "1.15.6", + "description": "HTTP and HTTPS modules that follow redirects.", + "license": "MIT", + "main": "index.js", + "files": [ + "*.js" + ], + "engines": { + "node": ">=4.0" + }, + "scripts": { + "lint": "eslint *.js test", + "test": "nyc mocha" + }, + "repository": { + "type": "git", + "url": "git@github.com:follow-redirects/follow-redirects.git" + }, + "homepage": "https://github.com/follow-redirects/follow-redirects", + "bugs": { + "url": "https://github.com/follow-redirects/follow-redirects/issues" + }, + "keywords": [ + "http", + "https", + "url", + "redirect", + "client", + "location", + "utility" + ], + "author": "Ruben Verborgh (https://ruben.verborgh.org/)", + "contributors": [ + "Olivier Lalonde (http://www.syskall.com)", + "James Talmage " + ], + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "peerDependenciesMeta": { + "debug": { + "optional": true + } + }, + "devDependencies": { + "concat-stream": "^2.0.0", + "eslint": "^5.16.0", + "express": "^4.16.4", + "lolex": "^3.1.0", + "mocha": "^6.0.2", + "nyc": "^14.1.1" + } +} diff --git a/node_modules/form-data/License b/node_modules/form-data/License new file mode 100644 index 0000000..c7ff12a --- /dev/null +++ b/node_modules/form-data/License @@ -0,0 +1,19 @@ +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + 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/node_modules/form-data/README.md.bak b/node_modules/form-data/README.md.bak new file mode 100644 index 0000000..298a1a2 --- /dev/null +++ b/node_modules/form-data/README.md.bak @@ -0,0 +1,358 @@ +# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) + +A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. + +The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. + +[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface + +[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) + +[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) +[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) + +## Install + +``` +npm install --save form-data +``` + +## Usage + +In this example we are constructing a form with 3 fields that contain a string, +a buffer and a file stream. + +``` javascript +var FormData = require('form-data'); +var fs = require('fs'); + +var form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); +``` + +Also you can use http-response stream: + +``` javascript +var FormData = require('form-data'); +var http = require('http'); + +var form = new FormData(); + +http.request('http://nodejs.org/images/logo.png', function(response) { + form.append('my_field', 'my value'); + form.append('my_buffer', new Buffer(10)); + form.append('my_logo', response); +}); +``` + +Or @mikeal's [request](https://github.com/request/request) stream: + +``` javascript +var FormData = require('form-data'); +var request = require('request'); + +var form = new FormData(); + +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_logo', request('http://nodejs.org/images/logo.png')); +``` + +In order to submit this form to a web application, call ```submit(url, [callback])``` method: + +``` javascript +form.submit('http://example.org/', function(err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +}); + +``` + +For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. + +### Custom options + +You can provide custom options, such as `maxDataSize`: + +``` javascript +var FormData = require('form-data'); + +var form = new FormData({ maxDataSize: 20971520 }); +form.append('my_field', 'my value'); +form.append('my_buffer', /* something big */); +``` + +List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) + +### Alternative submission methods + +You can use node's http client interface: + +``` javascript +var http = require('http'); + +var request = http.request({ + method: 'post', + host: 'example.org', + path: '/upload', + headers: form.getHeaders() +}); + +form.pipe(request); + +request.on('response', function(res) { + console.log(res.statusCode); +}); +``` + +Or if you would prefer the `'Content-Length'` header to be set for you: + +``` javascript +form.submit('example.org/upload', function(err, res) { + console.log(res.statusCode); +}); +``` + +To use custom headers and pre-known length in parts: + +``` javascript +var CRLF = '\r\n'; +var form = new FormData(); + +var options = { + header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, + knownLength: 1 +}; + +form.append('my_buffer', buffer, options); + +form.submit('http://example.com/', function(err, res) { + if (err) throw err; + console.log('Done'); +}); +``` + +Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: + +``` javascript +someModule.stream(function(err, stdout, stderr) { + if (err) throw err; + + var form = new FormData(); + + form.append('file', stdout, { + filename: 'unicycle.jpg', // ... or: + filepath: 'photos/toys/unicycle.jpg', + contentType: 'image/jpeg', + knownLength: 19806 + }); + + form.submit('http://example.com/', function(err, res) { + if (err) throw err; + console.log('Done'); + }); +}); +``` + +The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). + +For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: + +``` javascript +form.submit({ + host: 'example.com', + path: '/probably.php?extra=params', + auth: 'username:password' +}, function(err, res) { + console.log(res.statusCode); +}); +``` + +In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: + +``` javascript +form.submit({ + host: 'example.com', + path: '/surelynot.php', + headers: {'x-test-header': 'test-header-value'} +}, function(err, res) { + console.log(res.statusCode); +}); +``` + +### Methods + +- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). +- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) +- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) +- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) +- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) +- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) +- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) +- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) +- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) +- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) + +#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) +Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. +```javascript +var form = new FormData(); +form.append( 'my_string', 'my value' ); +form.append( 'my_integer', 1 ); +form.append( 'my_boolean', true ); +form.append( 'my_buffer', new Buffer(10) ); +form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) +``` + +You may provide a string for options, or an object. +```javascript +// Set filename by providing a string for options +form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); + +// provide an object. +form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); +``` + +#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) +This method adds the correct `content-type` header to the provided array of `userHeaders`. + +#### _String_ getBoundary() +Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers +for example: +```javascript +--------------------------515890814546601021194782 +``` + +#### _Void_ setBoundary(String _boundary_) +Set the boundary string, overriding the default behavior described above. + +_Note: The boundary must be unique and may not appear in the data._ + +#### _Buffer_ getBuffer() +Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. +```javascript +var form = new FormData(); +form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); +form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); + +axios.post( 'https://example.com/path/to/api', + form.getBuffer(), + form.getHeaders() + ) +``` +**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. + +#### _Integer_ getLengthSync() +Same as `getLength` but synchronous. + +_Note: getLengthSync __doesn't__ calculate streams length._ + +#### _Integer_ getLength( **function** _callback_ ) +Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated +```javascript +this.getLength(function(err, length) { + if (err) { + this._error(err); + return; + } + + // add content length + request.setHeader('Content-Length', length); + + ... +}.bind(this)); +``` + +#### _Boolean_ hasKnownLength() +Checks if the length of added values is known. + +#### _Request_ submit( _params_, **function** _callback_ ) +Submit the form to a web application. +```javascript +var form = new FormData(); +form.append( 'my_string', 'Hello World' ); + +form.submit( 'http://example.com/', function(err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +} ); +``` + +#### _String_ toString() +Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. + +### Integration with other libraries + +#### Request + +Form submission using [request](https://github.com/request/request): + +```javascript +var formData = { + my_field: 'my_value', + my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), +}; + +request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { + if (err) { + return console.error('upload failed:', err); + } + console.log('Upload successful! Server responded with:', body); +}); +``` + +For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). + +#### node-fetch + +You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): + +```javascript +var form = new FormData(); + +form.append('a', 1); + +fetch('http://example.com', { method: 'POST', body: form }) + .then(function(res) { + return res.json(); + }).then(function(json) { + console.log(json); + }); +``` + +#### axios + +In Node.js you can post a file using [axios](https://github.com/axios/axios): +```javascript +const form = new FormData(); +const stream = fs.createReadStream(PATH_TO_FILE); + +form.append('image', stream); + +// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` +const formHeaders = form.getHeaders(); + +axios.post('http://example.com', form, { + headers: { + ...formHeaders, + }, +}) +.then(response => response) +.catch(error => error) +``` + +## Notes + +- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. +- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). +- ```submit``` will not add `content-length` if form length is unknown or not calculable. +- Starting version `2.x` FormData has dropped support for `node@0.10.x`. +- Starting version `3.x` FormData has dropped support for `node@4.x`. + +## License + +Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/Readme.md b/node_modules/form-data/Readme.md new file mode 100644 index 0000000..298a1a2 --- /dev/null +++ b/node_modules/form-data/Readme.md @@ -0,0 +1,358 @@ +# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) + +A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. + +The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. + +[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface + +[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) + +[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) +[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) + +## Install + +``` +npm install --save form-data +``` + +## Usage + +In this example we are constructing a form with 3 fields that contain a string, +a buffer and a file stream. + +``` javascript +var FormData = require('form-data'); +var fs = require('fs'); + +var form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); +``` + +Also you can use http-response stream: + +``` javascript +var FormData = require('form-data'); +var http = require('http'); + +var form = new FormData(); + +http.request('http://nodejs.org/images/logo.png', function(response) { + form.append('my_field', 'my value'); + form.append('my_buffer', new Buffer(10)); + form.append('my_logo', response); +}); +``` + +Or @mikeal's [request](https://github.com/request/request) stream: + +``` javascript +var FormData = require('form-data'); +var request = require('request'); + +var form = new FormData(); + +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_logo', request('http://nodejs.org/images/logo.png')); +``` + +In order to submit this form to a web application, call ```submit(url, [callback])``` method: + +``` javascript +form.submit('http://example.org/', function(err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +}); + +``` + +For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. + +### Custom options + +You can provide custom options, such as `maxDataSize`: + +``` javascript +var FormData = require('form-data'); + +var form = new FormData({ maxDataSize: 20971520 }); +form.append('my_field', 'my value'); +form.append('my_buffer', /* something big */); +``` + +List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) + +### Alternative submission methods + +You can use node's http client interface: + +``` javascript +var http = require('http'); + +var request = http.request({ + method: 'post', + host: 'example.org', + path: '/upload', + headers: form.getHeaders() +}); + +form.pipe(request); + +request.on('response', function(res) { + console.log(res.statusCode); +}); +``` + +Or if you would prefer the `'Content-Length'` header to be set for you: + +``` javascript +form.submit('example.org/upload', function(err, res) { + console.log(res.statusCode); +}); +``` + +To use custom headers and pre-known length in parts: + +``` javascript +var CRLF = '\r\n'; +var form = new FormData(); + +var options = { + header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, + knownLength: 1 +}; + +form.append('my_buffer', buffer, options); + +form.submit('http://example.com/', function(err, res) { + if (err) throw err; + console.log('Done'); +}); +``` + +Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: + +``` javascript +someModule.stream(function(err, stdout, stderr) { + if (err) throw err; + + var form = new FormData(); + + form.append('file', stdout, { + filename: 'unicycle.jpg', // ... or: + filepath: 'photos/toys/unicycle.jpg', + contentType: 'image/jpeg', + knownLength: 19806 + }); + + form.submit('http://example.com/', function(err, res) { + if (err) throw err; + console.log('Done'); + }); +}); +``` + +The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). + +For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: + +``` javascript +form.submit({ + host: 'example.com', + path: '/probably.php?extra=params', + auth: 'username:password' +}, function(err, res) { + console.log(res.statusCode); +}); +``` + +In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: + +``` javascript +form.submit({ + host: 'example.com', + path: '/surelynot.php', + headers: {'x-test-header': 'test-header-value'} +}, function(err, res) { + console.log(res.statusCode); +}); +``` + +### Methods + +- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). +- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) +- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) +- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) +- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) +- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) +- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) +- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) +- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) +- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) + +#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) +Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. +```javascript +var form = new FormData(); +form.append( 'my_string', 'my value' ); +form.append( 'my_integer', 1 ); +form.append( 'my_boolean', true ); +form.append( 'my_buffer', new Buffer(10) ); +form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) +``` + +You may provide a string for options, or an object. +```javascript +// Set filename by providing a string for options +form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); + +// provide an object. +form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); +``` + +#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) +This method adds the correct `content-type` header to the provided array of `userHeaders`. + +#### _String_ getBoundary() +Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers +for example: +```javascript +--------------------------515890814546601021194782 +``` + +#### _Void_ setBoundary(String _boundary_) +Set the boundary string, overriding the default behavior described above. + +_Note: The boundary must be unique and may not appear in the data._ + +#### _Buffer_ getBuffer() +Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. +```javascript +var form = new FormData(); +form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); +form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); + +axios.post( 'https://example.com/path/to/api', + form.getBuffer(), + form.getHeaders() + ) +``` +**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. + +#### _Integer_ getLengthSync() +Same as `getLength` but synchronous. + +_Note: getLengthSync __doesn't__ calculate streams length._ + +#### _Integer_ getLength( **function** _callback_ ) +Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated +```javascript +this.getLength(function(err, length) { + if (err) { + this._error(err); + return; + } + + // add content length + request.setHeader('Content-Length', length); + + ... +}.bind(this)); +``` + +#### _Boolean_ hasKnownLength() +Checks if the length of added values is known. + +#### _Request_ submit( _params_, **function** _callback_ ) +Submit the form to a web application. +```javascript +var form = new FormData(); +form.append( 'my_string', 'Hello World' ); + +form.submit( 'http://example.com/', function(err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +} ); +``` + +#### _String_ toString() +Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. + +### Integration with other libraries + +#### Request + +Form submission using [request](https://github.com/request/request): + +```javascript +var formData = { + my_field: 'my_value', + my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), +}; + +request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { + if (err) { + return console.error('upload failed:', err); + } + console.log('Upload successful! Server responded with:', body); +}); +``` + +For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). + +#### node-fetch + +You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): + +```javascript +var form = new FormData(); + +form.append('a', 1); + +fetch('http://example.com', { method: 'POST', body: form }) + .then(function(res) { + return res.json(); + }).then(function(json) { + console.log(json); + }); +``` + +#### axios + +In Node.js you can post a file using [axios](https://github.com/axios/axios): +```javascript +const form = new FormData(); +const stream = fs.createReadStream(PATH_TO_FILE); + +form.append('image', stream); + +// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` +const formHeaders = form.getHeaders(); + +axios.post('http://example.com', form, { + headers: { + ...formHeaders, + }, +}) +.then(response => response) +.catch(error => error) +``` + +## Notes + +- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. +- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). +- ```submit``` will not add `content-length` if form length is unknown or not calculable. +- Starting version `2.x` FormData has dropped support for `node@0.10.x`. +- Starting version `3.x` FormData has dropped support for `node@4.x`. + +## License + +Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/index.d.ts b/node_modules/form-data/index.d.ts new file mode 100644 index 0000000..295e9e9 --- /dev/null +++ b/node_modules/form-data/index.d.ts @@ -0,0 +1,62 @@ +// Definitions by: Carlos Ballesteros Velasco +// Leon Yu +// BendingBender +// Maple Miao + +/// +import * as stream from 'stream'; +import * as http from 'http'; + +export = FormData; + +// Extracted because @types/node doesn't export interfaces. +interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?(this: stream.Readable, size: number): void; + destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; + autoDestroy?: boolean; +} + +interface Options extends ReadableOptions { + writable?: boolean; + readable?: boolean; + dataSize?: number; + maxDataSize?: number; + pauseStreams?: boolean; +} + +declare class FormData extends stream.Readable { + constructor(options?: Options); + append(key: string, value: any, options?: FormData.AppendOptions | string): void; + getHeaders(userHeaders?: FormData.Headers): FormData.Headers; + submit( + params: string | FormData.SubmitOptions, + callback?: (error: Error | null, response: http.IncomingMessage) => void + ): http.ClientRequest; + getBuffer(): Buffer; + setBoundary(boundary: string): void; + getBoundary(): string; + getLength(callback: (err: Error | null, length: number) => void): void; + getLengthSync(): number; + hasKnownLength(): boolean; +} + +declare namespace FormData { + interface Headers { + [key: string]: any; + } + + interface AppendOptions { + header?: string | Headers; + knownLength?: number; + filename?: string; + filepath?: string; + contentType?: string; + } + + interface SubmitOptions extends http.RequestOptions { + protocol?: 'https:' | 'http:'; + } +} diff --git a/node_modules/form-data/lib/browser.js b/node_modules/form-data/lib/browser.js new file mode 100644 index 0000000..09e7c70 --- /dev/null +++ b/node_modules/form-data/lib/browser.js @@ -0,0 +1,2 @@ +/* eslint-env browser */ +module.exports = typeof self == 'object' ? self.FormData : window.FormData; diff --git a/node_modules/form-data/lib/form_data.js b/node_modules/form-data/lib/form_data.js new file mode 100644 index 0000000..18dc819 --- /dev/null +++ b/node_modules/form-data/lib/form_data.js @@ -0,0 +1,501 @@ +var CombinedStream = require('combined-stream'); +var util = require('util'); +var path = require('path'); +var http = require('http'); +var https = require('https'); +var parseUrl = require('url').parse; +var fs = require('fs'); +var Stream = require('stream').Stream; +var mime = require('mime-types'); +var asynckit = require('asynckit'); +var populate = require('./populate.js'); + +// Public API +module.exports = FormData; + +// make it a Stream +util.inherits(FormData, CombinedStream); + +/** + * Create readable "multipart/form-data" streams. + * Can be used to submit forms + * and file uploads to other web applications. + * + * @constructor + * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream + */ +function FormData(options) { + if (!(this instanceof FormData)) { + return new FormData(options); + } + + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + + CombinedStream.call(this); + + options = options || {}; + for (var option in options) { + this[option] = options[option]; + } +} + +FormData.LINE_BREAK = '\r\n'; +FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + +FormData.prototype.append = function(field, value, options) { + + options = options || {}; + + // allow filename as single option + if (typeof options == 'string') { + options = {filename: options}; + } + + var append = CombinedStream.prototype.append.bind(this); + + // all that streamy business can't handle numbers + if (typeof value == 'number') { + value = '' + value; + } + + // https://github.com/felixge/node-form-data/issues/38 + if (util.isArray(value)) { + // Please convert your array into string + // the way web server expects it + this._error(new Error('Arrays are not supported.')); + return; + } + + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + + append(header); + append(value); + append(footer); + + // pass along options.knownLength + this._trackLength(header, value, options); +}; + +FormData.prototype._trackLength = function(header, value, options) { + var valueLength = 0; + + // used w/ getLengthSync(), when length is known. + // e.g. for streaming directly from a remote server, + // w/ a known file a size, and not wanting to wait for + // incoming file to finish to get its size. + if (options.knownLength != null) { + valueLength += +options.knownLength; + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === 'string') { + valueLength = Buffer.byteLength(value); + } + + this._valueLength += valueLength; + + // @check why add CRLF? does this account for custom/multiple CRLFs? + this._overheadLength += + Buffer.byteLength(header) + + FormData.LINE_BREAK.length; + + // empty or either doesn't have path or not an http response or not a stream + if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) { + return; + } + + // no need to bother with the length + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } +}; + +FormData.prototype._lengthRetriever = function(value, callback) { + + if (value.hasOwnProperty('fd')) { + + // take read range into a account + // `end` = Infinity –> read file till the end + // + // TODO: Looks like there is bug in Node fs.createReadStream + // it doesn't respect `end` options without `start` options + // Fix it when node fixes it. + // https://github.com/joyent/node/issues/7819 + if (value.end != undefined && value.end != Infinity && value.start != undefined) { + + // when end specified + // no need to calculate range + // inclusive, starts with 0 + callback(null, value.end + 1 - (value.start ? value.start : 0)); + + // not that fast snoopy + } else { + // still need to fetch file size from fs + fs.stat(value.path, function(err, stat) { + + var fileSize; + + if (err) { + callback(err); + return; + } + + // update final size based on the range options + fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + + // or http response + } else if (value.hasOwnProperty('httpVersion')) { + callback(null, +value.headers['content-length']); + + // or request stream http://github.com/mikeal/request + } else if (value.hasOwnProperty('httpModule')) { + // wait till response come back + value.on('response', function(response) { + value.pause(); + callback(null, +response.headers['content-length']); + }); + value.resume(); + + // something else + } else { + callback('Unknown stream'); + } +}; + +FormData.prototype._multiPartHeader = function(field, value, options) { + // custom header specified (as string)? + // it becomes responsible for boundary + // (e.g. to handle extra CRLFs on .NET servers) + if (typeof options.header == 'string') { + return options.header; + } + + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + + var contents = ''; + var headers = { + // add custom disposition as third element or keep it two elements if not + 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + 'Content-Type': [].concat(contentType || []) + }; + + // allow custom headers. + if (typeof options.header == 'object') { + populate(headers, options.header); + } + + var header; + for (var prop in headers) { + if (!headers.hasOwnProperty(prop)) continue; + header = headers[prop]; + + // skip nullish headers. + if (header == null) { + continue; + } + + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } + + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } + } + + return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; +}; + +FormData.prototype._getContentDisposition = function(value, options) { + + var filename + , contentDisposition + ; + + if (typeof options.filepath === 'string') { + // custom filepath for relative paths + filename = path.normalize(options.filepath).replace(/\\/g, '/'); + } else if (options.filename || value.name || value.path) { + // custom filename take precedence + // formidable and the browser add a name property + // fs- and request- streams have path property + filename = path.basename(options.filename || value.name || value.path); + } else if (value.readable && value.hasOwnProperty('httpVersion')) { + // or try http response + filename = path.basename(value.client._httpMessage.path || ''); + } + + if (filename) { + contentDisposition = 'filename="' + filename + '"'; + } + + return contentDisposition; +}; + +FormData.prototype._getContentType = function(value, options) { + + // use custom content-type above all + var contentType = options.contentType; + + // or try `name` from formidable, browser + if (!contentType && value.name) { + contentType = mime.lookup(value.name); + } + + // or try `path` from fs-, request- streams + if (!contentType && value.path) { + contentType = mime.lookup(value.path); + } + + // or if it's http-reponse + if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { + contentType = value.headers['content-type']; + } + + // or guess it from the filepath or filename + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + + // fallback to the default content type if `value` is not simple value + if (!contentType && typeof value == 'object') { + contentType = FormData.DEFAULT_CONTENT_TYPE; + } + + return contentType; +}; + +FormData.prototype._multiPartFooter = function() { + return function(next) { + var footer = FormData.LINE_BREAK; + + var lastPart = (this._streams.length === 0); + if (lastPart) { + footer += this._lastBoundary(); + } + + next(footer); + }.bind(this); +}; + +FormData.prototype._lastBoundary = function() { + return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; +}; + +FormData.prototype.getHeaders = function(userHeaders) { + var header; + var formHeaders = { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() + }; + + for (header in userHeaders) { + if (userHeaders.hasOwnProperty(header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + + return formHeaders; +}; + +FormData.prototype.setBoundary = function(boundary) { + this._boundary = boundary; +}; + +FormData.prototype.getBoundary = function() { + if (!this._boundary) { + this._generateBoundary(); + } + + return this._boundary; +}; + +FormData.prototype.getBuffer = function() { + var dataBuffer = new Buffer.alloc( 0 ); + var boundary = this.getBoundary(); + + // Create the form content. Add Line breaks to the end of data. + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== 'function') { + + // Add content to the buffer. + if(Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); + }else { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); + } + + // Add break after content. + if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] ); + } + } + } + + // Add the footer and return the Buffer object. + return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); +}; + +FormData.prototype._generateBoundary = function() { + // This generates a 50 character boundary similar to those used by Firefox. + // They are optimized for boyer-moore parsing. + var boundary = '--------------------------'; + for (var i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 10).toString(16); + } + + this._boundary = boundary; +}; + +// Note: getLengthSync DOESN'T calculate streams length +// As workaround one can calculate file size manually +// and add it as knownLength option +FormData.prototype.getLengthSync = function() { + var knownLength = this._overheadLength + this._valueLength; + + // Don't get confused, there are 3 "internal" streams for each keyval pair + // so it basically checks if there is any value added to the form + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + // https://github.com/form-data/form-data/issues/40 + if (!this.hasKnownLength()) { + // Some async length retrievers are present + // therefore synchronous length calculation is false. + // Please use getLength(callback) to get proper length + this._error(new Error('Cannot calculate proper length in synchronous way.')); + } + + return knownLength; +}; + +// Public API to check if length of added values is known +// https://github.com/form-data/form-data/issues/196 +// https://github.com/form-data/form-data/issues/262 +FormData.prototype.hasKnownLength = function() { + var hasKnownLength = true; + + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + + return hasKnownLength; +}; + +FormData.prototype.getLength = function(cb) { + var knownLength = this._overheadLength + this._valueLength; + + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { + if (err) { + cb(err); + return; + } + + values.forEach(function(length) { + knownLength += length; + }); + + cb(null, knownLength); + }); +}; + +FormData.prototype.submit = function(params, cb) { + var request + , options + , defaults = {method: 'post'} + ; + + // parse provided url if it's string + // or treat it as options object + if (typeof params == 'string') { + + params = parseUrl(params); + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + + // use custom params + } else { + + options = populate(params, defaults); + // if no port provided use default one + if (!options.port) { + options.port = options.protocol == 'https:' ? 443 : 80; + } + } + + // put that good code in getHeaders to some use + options.headers = this.getHeaders(params.headers); + + // https if specified, fallback to http in any other case + if (options.protocol == 'https:') { + request = https.request(options); + } else { + request = http.request(options); + } + + // get content length and fire away + this.getLength(function(err, length) { + if (err && err !== 'Unknown stream') { + this._error(err); + return; + } + + // add content length + if (length) { + request.setHeader('Content-Length', length); + } + + this.pipe(request); + if (cb) { + var onResponse; + + var callback = function (error, responce) { + request.removeListener('error', callback); + request.removeListener('response', onResponse); + + return cb.call(this, error, responce); + }; + + onResponse = callback.bind(this, null); + + request.on('error', callback); + request.on('response', onResponse); + } + }.bind(this)); + + return request; +}; + +FormData.prototype._error = function(err) { + if (!this.error) { + this.error = err; + this.pause(); + this.emit('error', err); + } +}; + +FormData.prototype.toString = function () { + return '[object FormData]'; +}; diff --git a/node_modules/form-data/lib/populate.js b/node_modules/form-data/lib/populate.js new file mode 100644 index 0000000..4d35738 --- /dev/null +++ b/node_modules/form-data/lib/populate.js @@ -0,0 +1,10 @@ +// populates missing values +module.exports = function(dst, src) { + + Object.keys(src).forEach(function(prop) + { + dst[prop] = dst[prop] || src[prop]; + }); + + return dst; +}; diff --git a/node_modules/form-data/package.json b/node_modules/form-data/package.json new file mode 100644 index 0000000..0f20240 --- /dev/null +++ b/node_modules/form-data/package.json @@ -0,0 +1,68 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "form-data", + "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", + "version": "4.0.0", + "repository": { + "type": "git", + "url": "git://github.com/form-data/form-data.git" + }, + "main": "./lib/form_data", + "browser": "./lib/browser", + "typings": "./index.d.ts", + "scripts": { + "pretest": "rimraf coverage test/tmp", + "test": "istanbul cover test/run.js", + "posttest": "istanbul report lcov text", + "lint": "eslint lib/*.js test/*.js test/integration/*.js", + "report": "istanbul report lcov text", + "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", + "ci-test": "npm run test && npm run browser && npm run report", + "predebug": "rimraf coverage test/tmp", + "debug": "verbose=1 ./test/run.js", + "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", + "check": "istanbul check-coverage coverage/coverage*.json", + "files": "pkgfiles --sort=name", + "get-version": "node -e \"console.log(require('./package.json').version)\"", + "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", + "restore-readme": "mv README.md.bak README.md", + "prepublish": "in-publish && npm run update-readme || not-in-publish", + "postpublish": "npm run restore-readme" + }, + "pre-commit": [ + "lint", + "ci-test", + "check" + ], + "engines": { + "node": ">= 6" + }, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "devDependencies": { + "@types/node": "^12.0.10", + "browserify": "^13.1.1", + "browserify-istanbul": "^2.0.0", + "coveralls": "^3.0.4", + "cross-spawn": "^6.0.5", + "eslint": "^6.0.1", + "fake": "^0.2.2", + "far": "^0.0.7", + "formidable": "^1.0.17", + "in-publish": "^2.0.0", + "is-node-modern": "^1.0.0", + "istanbul": "^0.4.5", + "obake": "^0.1.2", + "puppeteer": "^1.19.0", + "pkgfiles": "^2.3.0", + "pre-commit": "^1.1.3", + "request": "^2.88.0", + "rimraf": "^2.7.1", + "tape": "^4.6.2", + "typescript": "^3.5.2" + }, + "license": "MIT" +} diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md new file mode 100644 index 0000000..7436f64 --- /dev/null +++ b/node_modules/mime-db/HISTORY.md @@ -0,0 +1,507 @@ +1.52.0 / 2022-02-21 +=================== + + * Add extensions from IANA for more `image/*` types + * Add extension `.asc` to `application/pgp-keys` + * Add extensions to various XML types + * Add new upstream MIME types + +1.51.0 / 2021-11-08 +=================== + + * Add new upstream MIME types + * Mark `image/vnd.microsoft.icon` as compressible + * Mark `image/vnd.ms-dds` as compressible + +1.50.0 / 2021-09-15 +=================== + + * Add deprecated iWorks mime types and extensions + * Add new upstream MIME types + +1.49.0 / 2021-07-26 +=================== + + * Add extension `.trig` to `application/trig` + * Add new upstream MIME types + +1.48.0 / 2021-05-30 +=================== + + * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + * Add new upstream MIME types + * Mark `text/yaml` as compressible + +1.47.0 / 2021-04-01 +=================== + + * Add new upstream MIME types + * Remove ambigious extensions from IANA for `application/*+xml` types + * Update primary extension to `.es` for `application/ecmascript` + +1.46.0 / 2021-02-13 +=================== + + * Add extension `.amr` to `audio/amr` + * Add extension `.m4s` to `video/iso.segment` + * Add extension `.opus` to `audio/ogg` + * Add new upstream MIME types + +1.45.0 / 2020-09-22 +=================== + + * Add `application/ubjson` with extension `.ubj` + * Add `image/avif` with extension `.avif` + * Add `image/ktx2` with extension `.ktx2` + * Add extension `.dbf` to `application/vnd.dbf` + * Add extension `.rar` to `application/vnd.rar` + * Add extension `.td` to `application/urc-targetdesc+xml` + * Add new upstream MIME types + * Fix extension of `application/vnd.apple.keynote` to be `.key` + +1.44.0 / 2020-04-22 +=================== + + * Add charsets from IANA + * Add extension `.cjs` to `application/node` + * Add new upstream MIME types + +1.43.0 / 2020-01-05 +=================== + + * Add `application/x-keepass2` with extension `.kdbx` + * Add extension `.mxmf` to `audio/mobile-xmf` + * Add extensions from IANA for `application/*+xml` types + * Add new upstream MIME types + +1.42.0 / 2019-09-25 +=================== + + * Add `image/vnd.ms-dds` with extension `.dds` + * Add new upstream MIME types + * Remove compressible from `multipart/mixed` + +1.41.0 / 2019-08-30 +=================== + + * Add new upstream MIME types + * Add `application/toml` with extension `.toml` + * Mark `font/ttf` as compressible + +1.40.0 / 2019-04-20 +=================== + + * Add extensions from IANA for `model/*` types + * Add `text/mdx` with extension `.mdx` + +1.39.0 / 2019-04-04 +=================== + + * Add extensions `.siv` and `.sieve` to `application/sieve` + * Add new upstream MIME types + +1.38.0 / 2019-02-04 +=================== + + * Add extension `.nq` to `application/n-quads` + * Add extension `.nt` to `application/n-triples` + * Add new upstream MIME types + * Mark `text/less` as compressible + +1.37.0 / 2018-10-19 +=================== + + * Add extensions to HEIC image types + * Add new upstream MIME types + +1.36.0 / 2018-08-20 +=================== + + * Add Apple file extensions from IANA + * Add extensions from IANA for `image/*` types + * Add new upstream MIME types + +1.35.0 / 2018-07-15 +=================== + + * Add extension `.owl` to `application/rdf+xml` + * Add new upstream MIME types + - Removes extension `.woff` from `application/font-woff` + +1.34.0 / 2018-06-03 +=================== + + * Add extension `.csl` to `application/vnd.citationstyles.style+xml` + * Add extension `.es` to `application/ecmascript` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/turtle` + * Mark all XML-derived types as compressible + +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + +1.30.0 / 2017-08-27 +=================== + + * Add `application/vnd.ms-outlook` + * Add `application/x-arj` + * Add extension `.mjs` to `application/javascript` + * Add glTF types and extensions + * Add new upstream MIME types + * Add `text/x-org` + * Add VirtualBox MIME types + * Fix `source` records for `video/*` types that are IANA + * Update `font/opentype` to registered `font/otf` + +1.29.0 / 2017-07-10 +=================== + + * Add `application/fido.trusted-apps+json` + * Add extension `.wadl` to `application/vnd.sun.wadl+xml` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/css` + +1.28.0 / 2017-05-14 +=================== + + * Add new upstream MIME types + * Add extension `.gz` to `application/gzip` + * Update extensions `.md` and `.markdown` to be `text/markdown` + +1.27.0 / 2017-03-16 +=================== + + * Add new upstream MIME types + * Add `image/apng` with extension `.apng` + +1.26.0 / 2017-01-14 +=================== + + * Add new upstream MIME types + * Add extension `.geojson` to `application/geo+json` + +1.25.0 / 2016-11-11 +=================== + + * Add new upstream MIME types + +1.24.0 / 2016-09-18 +=================== + + * Add `audio/mp3` + * Add new upstream MIME types + +1.23.0 / 2016-05-01 +=================== + + * Add new upstream MIME types + * Add extension `.3gpp` to `audio/3gpp` + +1.22.0 / 2016-02-15 +=================== + + * Add `text/slim` + * Add extension `.rng` to `application/xml` + * Add new upstream MIME types + * Fix extension of `application/dash+xml` to be `.mpd` + * Update primary extension to `.m4a` for `audio/mp4` + +1.21.0 / 2016-01-06 +=================== + + * Add Google document types + * Add new upstream MIME types + +1.20.0 / 2015-11-10 +=================== + + * Add `text/x-suse-ymp` + * Add new upstream MIME types + +1.19.0 / 2015-09-17 +=================== + + * Add `application/vnd.apple.pkpass` + * Add new upstream MIME types + +1.18.0 / 2015-09-03 +=================== + + * Add new upstream MIME types + +1.17.0 / 2015-08-13 +=================== + + * Add `application/x-msdos-program` + * Add `audio/g711-0` + * Add `image/vnd.mozilla.apng` + * Add extension `.exe` to `application/x-msdos-program` + +1.16.0 / 2015-07-29 +=================== + + * Add `application/vnd.uri-map` + +1.15.0 / 2015-07-13 +=================== + + * Add `application/x-httpd-php` + +1.14.0 / 2015-06-25 +=================== + + * Add `application/scim+json` + * Add `application/vnd.3gpp.ussd+xml` + * Add `application/vnd.biopax.rdf+xml` + * Add `text/x-processing` + +1.13.0 / 2015-06-07 +=================== + + * Add nginx as a source + * Add `application/x-cocoa` + * Add `application/x-java-archive-diff` + * Add `application/x-makeself` + * Add `application/x-perl` + * Add `application/x-pilot` + * Add `application/x-redhat-package-manager` + * Add `application/x-sea` + * Add `audio/x-m4a` + * Add `audio/x-realaudio` + * Add `image/x-jng` + * Add `text/mathml` + +1.12.0 / 2015-06-05 +=================== + + * Add `application/bdoc` + * Add `application/vnd.hyperdrive+json` + * Add `application/x-bdoc` + * Add extension `.rtf` to `text/rtf` + +1.11.0 / 2015-05-31 +=================== + + * Add `audio/wav` + * Add `audio/wave` + * Add extension `.litcoffee` to `text/coffeescript` + * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` + * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` + +1.10.0 / 2015-05-19 +=================== + + * Add `application/vnd.balsamiq.bmpr` + * Add `application/vnd.microsoft.portable-executable` + * Add `application/x-ns-proxy-autoconfig` + +1.9.1 / 2015-04-19 +================== + + * Remove `.json` extension from `application/manifest+json` + - This is causing bugs downstream + +1.9.0 / 2015-04-19 +================== + + * Add `application/manifest+json` + * Add `application/vnd.micro+json` + * Add `image/vnd.zbrush.pcx` + * Add `image/x-ms-bmp` + +1.8.0 / 2015-03-13 +================== + + * Add `application/vnd.citationstyles.style+xml` + * Add `application/vnd.fastcopy-disk-image` + * Add `application/vnd.gov.sk.xmldatacontainer+xml` + * Add extension `.jsonld` to `application/ld+json` + +1.7.0 / 2015-02-08 +================== + + * Add `application/vnd.gerber` + * Add `application/vnd.msa-disk-image` + +1.6.1 / 2015-02-05 +================== + + * Community extensions ownership transferred from `node-mime` + +1.6.0 / 2015-01-29 +================== + + * Add `application/jose` + * Add `application/jose+json` + * Add `application/json-seq` + * Add `application/jwk+json` + * Add `application/jwk-set+json` + * Add `application/jwt` + * Add `application/rdap+json` + * Add `application/vnd.gov.sk.e-form+xml` + * Add `application/vnd.ims.imsccv1p3` + +1.5.0 / 2014-12-30 +================== + + * Add `application/vnd.oracle.resource+json` + * Fix various invalid MIME type entries + - `application/mbox+xml` + - `application/oscp-response` + - `application/vwg-multiplexed` + - `audio/g721` + +1.4.0 / 2014-12-21 +================== + + * Add `application/vnd.ims.imsccv1p2` + * Fix various invalid MIME type entries + - `application/vnd-acucobol` + - `application/vnd-curl` + - `application/vnd-dart` + - `application/vnd-dxr` + - `application/vnd-fdf` + - `application/vnd-mif` + - `application/vnd-sema` + - `application/vnd-wap-wmlc` + - `application/vnd.adobe.flash-movie` + - `application/vnd.dece-zip` + - `application/vnd.dvb_service` + - `application/vnd.micrografx-igx` + - `application/vnd.sealed-doc` + - `application/vnd.sealed-eml` + - `application/vnd.sealed-mht` + - `application/vnd.sealed-ppt` + - `application/vnd.sealed-tiff` + - `application/vnd.sealed-xls` + - `application/vnd.sealedmedia.softseal-html` + - `application/vnd.sealedmedia.softseal-pdf` + - `application/vnd.wap-slc` + - `application/vnd.wap-wbxml` + - `audio/vnd.sealedmedia.softseal-mpeg` + - `image/vnd-djvu` + - `image/vnd-svf` + - `image/vnd-wap-wbmp` + - `image/vnd.sealed-png` + - `image/vnd.sealedmedia.softseal-gif` + - `image/vnd.sealedmedia.softseal-jpg` + - `model/vnd-dwf` + - `model/vnd.parasolid.transmit-binary` + - `model/vnd.parasolid.transmit-text` + - `text/vnd-a` + - `text/vnd-curl` + - `text/vnd.wap-wml` + * Remove example template MIME types + - `application/example` + - `audio/example` + - `image/example` + - `message/example` + - `model/example` + - `multipart/example` + - `text/example` + - `video/example` + +1.3.1 / 2014-12-16 +================== + + * Fix missing extensions + - `application/json5` + - `text/hjson` + +1.3.0 / 2014-12-07 +================== + + * Add `application/a2l` + * Add `application/aml` + * Add `application/atfx` + * Add `application/atxml` + * Add `application/cdfx+xml` + * Add `application/dii` + * Add `application/json5` + * Add `application/lxf` + * Add `application/mf4` + * Add `application/vnd.apache.thrift.compact` + * Add `application/vnd.apache.thrift.json` + * Add `application/vnd.coffeescript` + * Add `application/vnd.enphase.envoy` + * Add `application/vnd.ims.imsccv1p1` + * Add `text/csv-schema` + * Add `text/hjson` + * Add `text/markdown` + * Add `text/yaml` + +1.2.0 / 2014-11-09 +================== + + * Add `application/cea` + * Add `application/dit` + * Add `application/vnd.gov.sk.e-form+zip` + * Add `application/vnd.tmd.mediaflex.api+xml` + * Type `application/epub+zip` is now IANA-registered + +1.1.2 / 2014-10-23 +================== + + * Rebuild database for `application/x-www-form-urlencoded` change + +1.1.1 / 2014-10-20 +================== + + * Mark `application/x-www-form-urlencoded` as compressible. + +1.1.0 / 2014-09-28 +================== + + * Add `application/font-woff2` + +1.0.3 / 2014-09-25 +================== + + * Fix engine requirement in package + +1.0.2 / 2014-09-25 +================== + + * Add `application/coap-group+json` + * Add `application/dcd` + * Add `application/vnd.apache.thrift.binary` + * Add `image/vnd.tencent.tap` + * Mark all JSON-derived types as compressible + * Update `text/vtt` data + +1.0.1 / 2014-08-30 +================== + + * Fix extension ordering + +1.0.0 / 2014-08-30 +================== + + * Add `application/atf` + * Add `application/merge-patch+json` + * Add `multipart/x-mixed-replace` + * Add `source: 'apache'` metadata + * Add `source: 'iana'` metadata + * Remove badly-assumed charset data diff --git a/node_modules/mime-db/LICENSE b/node_modules/mime-db/LICENSE new file mode 100644 index 0000000..0751cb1 --- /dev/null +++ b/node_modules/mime-db/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +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/node_modules/mime-db/README.md b/node_modules/mime-db/README.md new file mode 100644 index 0000000..5a8fcfe --- /dev/null +++ b/node_modules/mime-db/README.md @@ -0,0 +1,100 @@ +# mime-db + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +This is a large database of mime types and information about them. +It consists of a single, public JSON file and does not include any logic, +allowing it to remain as un-opinionated as possible with an API. +It aggregates data from the following sources: + +- http://www.iana.org/assignments/media-types/media-types.xhtml +- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +## Installation + +```bash +npm install mime-db +``` + +### Database Download + +If you're crazy enough to use this in the browser, you can just grab the +JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to +replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) +as the JSON format may change in the future. + +``` +https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json +``` + +## Usage + +```js +var db = require('mime-db') + +// grab data on .js files +var data = db['application/javascript'] +``` + +## Data Structure + +The JSON file is a map lookup for lowercased mime types. +Each mime type has the following properties: + +- `.source` - where the mime type is defined. + If not set, it's probably a custom media type. + - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) +- `.extensions[]` - known extensions associated with this mime type. +- `.compressible` - whether a file of this type can be gzipped. +- `.charset` - the default charset associated with this type, if any. + +If unknown, every property could be `undefined`. + +## Contributing + +To edit the database, only make PRs against `src/custom-types.json` or +`src/custom-suffix.json`. + +The `src/custom-types.json` file is a JSON object with the MIME type as the +keys and the values being an object with the following keys: + +- `compressible` - leave out if you don't know, otherwise `true`/`false` to + indicate whether the data represented by the type is typically compressible. +- `extensions` - include an array of file extensions that are associated with + the type. +- `notes` - human-readable notes about the type, typically what the type is. +- `sources` - include an array of URLs of where the MIME type and the associated + extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); + links to type aggregating sites and Wikipedia are _not acceptable_. + +To update the build, run `npm run build`. + +### Adding Custom Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associateed with this media type, the source must definitively link the +media type and extension as well. + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci +[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master +[node-image]: https://badgen.net/npm/node/mime-db +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-db +[npm-url]: https://npmjs.org/package/mime-db +[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json new file mode 100644 index 0000000..eb9c42c --- /dev/null +++ b/node_modules/mime-db/db.json @@ -0,0 +1,8519 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["es","ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/node_modules/mime-db/index.js b/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json new file mode 100644 index 0000000..32c14b8 --- /dev/null +++ b/node_modules/mime-db/package.json @@ -0,0 +1,60 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.52.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)", + "Robert Kieffer (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "cogent": "1.0.1", + "csv-parse": "4.16.3", + "eslint": "7.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.1.1", + "eslint-plugin-standard": "4.1.0", + "gnode": "0.1.2", + "media-typer": "1.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "raw-body": "2.5.0", + "stream-to-array": "2.3.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md new file mode 100644 index 0000000..c5043b7 --- /dev/null +++ b/node_modules/mime-types/HISTORY.md @@ -0,0 +1,397 @@ +2.1.35 / 2022-03-12 +=================== + + * deps: mime-db@1.52.0 + - Add extensions from IANA for more `image/*` types + - Add extension `.asc` to `application/pgp-keys` + - Add extensions to various XML types + - Add new upstream MIME types + +2.1.34 / 2021-11-08 +=================== + + * deps: mime-db@1.51.0 + - Add new upstream MIME types + +2.1.33 / 2021-10-01 +=================== + + * deps: mime-db@1.50.0 + - Add deprecated iWorks mime types and extensions + - Add new upstream MIME types + +2.1.32 / 2021-07-27 +=================== + + * deps: mime-db@1.49.0 + - Add extension `.trig` to `application/trig` + - Add new upstream MIME types + +2.1.31 / 2021-06-01 +=================== + + * deps: mime-db@1.48.0 + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add new upstream MIME types + +2.1.30 / 2021-04-02 +=================== + + * deps: mime-db@1.47.0 + - Add extension `.amr` to `audio/amr` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +2.1.29 / 2021-02-17 +=================== + + * deps: mime-db@1.46.0 + - Add extension `.amr` to `audio/amr` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.opus` to `audio/ogg` + - Add new upstream MIME types + +2.1.28 / 2021-01-01 +=================== + + * deps: mime-db@1.45.0 + - Add `application/ubjson` with extension `.ubj` + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + +2.1.27 / 2020-04-23 +=================== + + * deps: mime-db@1.44.0 + - Add charsets from IANA + - Add extension `.cjs` to `application/node` + - Add new upstream MIME types + +2.1.26 / 2020-01-05 +=================== + + * deps: mime-db@1.43.0 + - Add `application/x-keepass2` with extension `.kdbx` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extensions from IANA for `application/*+xml` types + - Add new upstream MIME types + +2.1.25 / 2019-11-12 +=================== + + * deps: mime-db@1.42.0 + - Add new upstream MIME types + - Add `application/toml` with extension `.toml` + - Add `image/vnd.ms-dds` with extension `.dds` + +2.1.24 / 2019-04-20 +=================== + + * deps: mime-db@1.40.0 + - Add extensions from IANA for `model/*` types + - Add `text/mdx` with extension `.mdx` + +2.1.23 / 2019-04-17 +=================== + + * deps: mime-db@~1.39.0 + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add new upstream MIME types + +2.1.22 / 2019-02-14 +=================== + + * deps: mime-db@~1.38.0 + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add new upstream MIME types + +2.1.21 / 2018-10-19 +=================== + + * deps: mime-db@~1.37.0 + - Add extensions to HEIC image types + - Add new upstream MIME types + +2.1.20 / 2018-08-26 +=================== + + * deps: mime-db@~1.36.0 + - Add Apple file extensions from IANA + - Add extensions from IANA for `image/*` types + - Add new upstream MIME types + +2.1.19 / 2018-07-17 +=================== + + * deps: mime-db@~1.35.0 + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.owl` to `application/rdf+xml` + - Add new upstream MIME types + - Add UTF-8 as default charset for `text/turtle` + +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +2.1.17 / 2017-09-01 +=================== + + * deps: mime-db@~1.30.0 + - Add `application/vnd.ms-outlook` + - Add `application/x-arj` + - Add extension `.mjs` to `application/javascript` + - Add glTF types and extensions + - Add new upstream MIME types + - Add `text/x-org` + - Add VirtualBox MIME types + - Fix `source` records for `video/*` types that are IANA + - Update `font/opentype` to registered `font/otf` + +2.1.16 / 2017-07-24 +=================== + + * deps: mime-db@~1.29.0 + - Add `application/fido.trusted-apps+json` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add new upstream MIME types + - Update extensions `.md` and `.markdown` to be `text/markdown` + +2.1.15 / 2017-03-23 +=================== + + * deps: mime-db@~1.27.0 + - Add new mime types + - Add `image/apng` + +2.1.14 / 2017-01-14 +=================== + + * deps: mime-db@~1.26.0 + - Add new mime types + +2.1.13 / 2016-11-18 +=================== + + * deps: mime-db@~1.25.0 + - Add new mime types + +2.1.12 / 2016-09-18 +=================== + + * deps: mime-db@~1.24.0 + - Add new mime types + - Add `audio/mp3` + +2.1.11 / 2016-05-01 +=================== + + * deps: mime-db@~1.23.0 + - Add new mime types + +2.1.10 / 2016-02-15 +=================== + + * deps: mime-db@~1.22.0 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +2.1.9 / 2016-01-06 +================== + + * deps: mime-db@~1.21.0 + - Add new mime types + +2.1.8 / 2015-11-30 +================== + + * deps: mime-db@~1.20.0 + - Add new mime types + +2.1.7 / 2015-09-20 +================== + + * deps: mime-db@~1.19.0 + - Add new mime types + +2.1.6 / 2015-09-03 +================== + + * deps: mime-db@~1.18.0 + - Add new mime types + +2.1.5 / 2015-08-20 +================== + + * deps: mime-db@~1.17.0 + - Add new mime types + +2.1.4 / 2015-07-30 +================== + + * deps: mime-db@~1.16.0 + - Add new mime types + +2.1.3 / 2015-07-13 +================== + + * deps: mime-db@~1.15.0 + - Add new mime types + +2.1.2 / 2015-06-25 +================== + + * deps: mime-db@~1.14.0 + - Add new mime types + +2.1.1 / 2015-06-08 +================== + + * perf: fix deopt during mapping + +2.1.0 / 2015-06-07 +================== + + * Fix incorrectly treating extension-less file name as extension + - i.e. `'path/to/json'` will no longer return `application/json` + * Fix `.charset(type)` to accept parameters + * Fix `.charset(type)` to match case-insensitive + * Improve generation of extension to MIME mapping + * Refactor internals for readability and no argument reassignment + * Prefer `application/*` MIME types from the same source + * Prefer any type over `application/octet-stream` + * deps: mime-db@~1.13.0 + - Add nginx as a source + - Add new mime types + +2.0.14 / 2015-06-06 +=================== + + * deps: mime-db@~1.12.0 + - Add new mime types + +2.0.13 / 2015-05-31 +=================== + + * deps: mime-db@~1.11.0 + - Add new mime types + +2.0.12 / 2015-05-19 +=================== + + * deps: mime-db@~1.10.0 + - Add new mime types + +2.0.11 / 2015-05-05 +=================== + + * deps: mime-db@~1.9.1 + - Add new mime types + +2.0.10 / 2015-03-13 +=================== + + * deps: mime-db@~1.8.0 + - Add new mime types + +2.0.9 / 2015-02-09 +================== + + * deps: mime-db@~1.7.0 + - Add new mime types + - Community extensions ownership transferred from `node-mime` + +2.0.8 / 2015-01-29 +================== + + * deps: mime-db@~1.6.0 + - Add new mime types + +2.0.7 / 2014-12-30 +================== + + * deps: mime-db@~1.5.0 + - Add new mime types + - Fix various invalid MIME type entries + +2.0.6 / 2014-12-30 +================== + + * deps: mime-db@~1.4.0 + - Add new mime types + - Fix various invalid MIME type entries + - Remove example template MIME types + +2.0.5 / 2014-12-29 +================== + + * deps: mime-db@~1.3.1 + - Fix missing extensions + +2.0.4 / 2014-12-10 +================== + + * deps: mime-db@~1.3.0 + - Add new mime types + +2.0.3 / 2014-11-09 +================== + + * deps: mime-db@~1.2.0 + - Add new mime types + +2.0.2 / 2014-09-28 +================== + + * deps: mime-db@~1.1.0 + - Add new mime types + - Update charsets + +2.0.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + +2.0.0 / 2014-09-02 +================== + + * Use `mime-db` + * Remove `.define()` + +1.0.2 / 2014-08-04 +================== + + * Set charset=utf-8 for `text/javascript` + +1.0.1 / 2014-06-24 +================== + + * Add `text/jsx` type + +1.0.0 / 2014-05-12 +================== + + * Return `false` for unknown types + * Set charset=utf-8 for `application/json` + +0.1.0 / 2014-05-02 +================== + + * Initial release diff --git a/node_modules/mime-types/LICENSE b/node_modules/mime-types/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/node_modules/mime-types/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +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/node_modules/mime-types/README.md b/node_modules/mime-types/README.md new file mode 100644 index 0000000..48d2fb4 --- /dev/null +++ b/node_modules/mime-types/README.md @@ -0,0 +1,113 @@ +# mime-types + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +The ultimate javascript content-type utility. + +Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: + +- __No fallbacks.__ Instead of naively returning the first available type, + `mime-types` simply returns `false`, so do + `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. +- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. +- No `.define()` functionality +- Bug fixes for `.lookup(path)` + +Otherwise, the API is compatible with `mime` 1.x. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install mime-types +``` + +## Adding Types + +All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), +so open a PR there if you'd like to add mime types. + +## API + +```js +var mime = require('mime-types') +``` + +All functions return `false` if input is invalid or not found. + +### mime.lookup(path) + +Lookup the content-type associated with a file. + +```js +mime.lookup('json') // 'application/json' +mime.lookup('.md') // 'text/markdown' +mime.lookup('file.html') // 'text/html' +mime.lookup('folder/file.js') // 'application/javascript' +mime.lookup('folder/.htaccess') // false + +mime.lookup('cats') // false +``` + +### mime.contentType(type) + +Create a full content-type header given a content-type or extension. +When given an extension, `mime.lookup` is used to get the matching +content-type, otherwise the given content-type is used. Then if the +content-type does not already have a `charset` parameter, `mime.charset` +is used to get the default charset and add to the returned content-type. + +```js +mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' +mime.contentType('file.json') // 'application/json; charset=utf-8' +mime.contentType('text/html') // 'text/html; charset=utf-8' +mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' + +// from a full path +mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' +``` + +### mime.extension(type) + +Get the default extension for a content-type. + +```js +mime.extension('application/octet-stream') // 'bin' +``` + +### mime.charset(type) + +Lookup the implied default charset of a content-type. + +```js +mime.charset('text/markdown') // 'UTF-8' +``` + +### var type = mime.types[extension] + +A map of content-types by extension. + +### [extensions...] = mime.extensions[type] + +A map of extensions by content-type. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci +[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master +[node-version-image]: https://badgen.net/npm/node/mime-types +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-types +[npm-url]: https://npmjs.org/package/mime-types +[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/node_modules/mime-types/index.js b/node_modules/mime-types/index.js new file mode 100644 index 0000000..b9f34d5 --- /dev/null +++ b/node_modules/mime-types/index.js @@ -0,0 +1,188 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json new file mode 100644 index 0000000..bbef696 --- /dev/null +++ b/node_modules/mime-types/package.json @@ -0,0 +1,44 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "2.1.35", + "contributors": [ + "Douglas Christopher Wilson ", + "Jeremiah Senkpiel (https://searchbeam.jit.su)", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "dependencies": { + "mime-db": "1.52.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/proxy-from-env/.eslintrc b/node_modules/proxy-from-env/.eslintrc new file mode 100644 index 0000000..a51449b --- /dev/null +++ b/node_modules/proxy-from-env/.eslintrc @@ -0,0 +1,29 @@ +{ + "env": { + "node": true + }, + "rules": { + "array-bracket-spacing": [2, "never"], + "block-scoped-var": 2, + "brace-style": [2, "1tbs"], + "camelcase": 1, + "computed-property-spacing": [2, "never"], + "curly": 2, + "eol-last": 2, + "eqeqeq": [2, "smart"], + "max-depth": [1, 3], + "max-len": [1, 80], + "max-statements": [1, 15], + "new-cap": 1, + "no-extend-native": 2, + "no-mixed-spaces-and-tabs": 2, + "no-trailing-spaces": 2, + "no-unused-vars": 1, + "no-use-before-define": [2, "nofunc"], + "object-curly-spacing": [2, "never"], + "quotes": [2, "single", "avoid-escape"], + "semi": [2, "always"], + "keyword-spacing": [2, {"before": true, "after": true}], + "space-unary-ops": 2 + } +} diff --git a/node_modules/proxy-from-env/.travis.yml b/node_modules/proxy-from-env/.travis.yml new file mode 100644 index 0000000..64a05f9 --- /dev/null +++ b/node_modules/proxy-from-env/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +node_js: + - node + - lts/* +script: + - npm run lint + # test-coverage will also run the tests, but does not print helpful output upon test failure. + # So we also run the tests separately. + - npm run test + - npm run test-coverage && cat coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf coverage diff --git a/node_modules/proxy-from-env/LICENSE b/node_modules/proxy-from-env/LICENSE new file mode 100644 index 0000000..8f25097 --- /dev/null +++ b/node_modules/proxy-from-env/LICENSE @@ -0,0 +1,20 @@ +The MIT License + +Copyright (C) 2016-2018 Rob Wu + +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/node_modules/proxy-from-env/README.md b/node_modules/proxy-from-env/README.md new file mode 100644 index 0000000..e82520c --- /dev/null +++ b/node_modules/proxy-from-env/README.md @@ -0,0 +1,131 @@ +# proxy-from-env + +[![Build Status](https://travis-ci.org/Rob--W/proxy-from-env.svg?branch=master)](https://travis-ci.org/Rob--W/proxy-from-env) +[![Coverage Status](https://coveralls.io/repos/github/Rob--W/proxy-from-env/badge.svg?branch=master)](https://coveralls.io/github/Rob--W/proxy-from-env?branch=master) + +`proxy-from-env` is a Node.js package that exports a function (`getProxyForUrl`) +that takes an input URL (a string or +[`url.parse`](https://nodejs.org/docs/latest/api/url.html#url_url_parsing)'s +return value) and returns the desired proxy URL (also a string) based on +standard proxy environment variables. If no proxy is set, an empty string is +returned. + +It is your responsibility to actually proxy the request using the given URL. + +Installation: + +```sh +npm install proxy-from-env +``` + +## Example +This example shows how the data for a URL can be fetched via the +[`http` module](https://nodejs.org/api/http.html), in a proxy-aware way. + +```javascript +var http = require('http'); +var parseUrl = require('url').parse; +var getProxyForUrl = require('proxy-from-env').getProxyForUrl; + +var some_url = 'http://example.com/something'; + +// // Example, if there is a proxy server at 10.0.0.1:1234, then setting the +// // http_proxy environment variable causes the request to go through a proxy. +// process.env.http_proxy = 'http://10.0.0.1:1234'; +// +// // But if the host to be proxied is listed in NO_PROXY, then the request is +// // not proxied (but a direct request is made). +// process.env.no_proxy = 'example.com'; + +var proxy_url = getProxyForUrl(some_url); // <-- Our magic. +if (proxy_url) { + // Should be proxied through proxy_url. + var parsed_some_url = parseUrl(some_url); + var parsed_proxy_url = parseUrl(proxy_url); + // A HTTP proxy is quite simple. It is similar to a normal request, except the + // path is an absolute URL, and the proxied URL's host is put in the header + // instead of the server's actual host. + httpOptions = { + protocol: parsed_proxy_url.protocol, + hostname: parsed_proxy_url.hostname, + port: parsed_proxy_url.port, + path: parsed_some_url.href, + headers: { + Host: parsed_some_url.host, // = host name + optional port. + }, + }; +} else { + // Direct request. + httpOptions = some_url; +} +http.get(httpOptions, function(res) { + var responses = []; + res.on('data', function(chunk) { responses.push(chunk); }); + res.on('end', function() { console.log(responses.join('')); }); +}); + +``` + +## Environment variables +The environment variables can be specified in lowercase or uppercase, with the +lowercase name having precedence over the uppercase variant. A variable that is +not set has the same meaning as a variable that is set but has no value. + +### NO\_PROXY + +`NO_PROXY` is a list of host names (optionally with a port). If the input URL +matches any of the entries in `NO_PROXY`, then the input URL should be fetched +by a direct request (i.e. without a proxy). + +Matching follows the following rules: + +- `NO_PROXY=*` disables all proxies. +- Space and commas may be used to separate the entries in the `NO_PROXY` list. +- If `NO_PROXY` does not contain any entries, then proxies are never disabled. +- If a port is added after the host name, then the ports must match. If the URL + does not have an explicit port name, the protocol's default port is used. +- Generally, the proxy is only disabled if the host name is an exact match for + an entry in the `NO_PROXY` list. The only exceptions are entries that start + with a dot or with a wildcard; then the proxy is disabled if the host name + ends with the entry. + +See `test.js` for examples of what should match and what does not. + +### \*\_PROXY + +The environment variable used for the proxy depends on the protocol of the URL. +For example, `https://example.com` uses the "https" protocol, and therefore the +proxy to be used is `HTTPS_PROXY` (_NOT_ `HTTP_PROXY`, which is _only_ used for +http:-URLs). + +The library is not limited to http(s), other schemes such as +`FTP_PROXY` (ftp:), +`WSS_PROXY` (wss:), +`WS_PROXY` (ws:) +are also supported. + +If present, `ALL_PROXY` is used as fallback if there is no other match. + + +## External resources +The exact way of parsing the environment variables is not codified in any +standard. This library is designed to be compatible with formats as expected by +existing software. +The following resources were used to determine the desired behavior: + +- cURL: + https://curl.haxx.se/docs/manpage.html#ENVIRONMENT + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4446-L4514 + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4608-L4638 + +- wget: + https://www.gnu.org/software/wget/manual/wget.html#Proxies + http://git.savannah.gnu.org/cgit/wget.git/tree/src/init.c?id=636a5f9a1c508aa39e35a3a8e9e54520a284d93d#n383 + http://git.savannah.gnu.org/cgit/wget.git/tree/src/retr.c?id=93c1517c4071c4288ba5a4b038e7634e4c6b5482#n1278 + +- W3: + https://www.w3.org/Daemon/User/Proxies/ProxyClients.html + +- Python's urllib: + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L755-L782 + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L2444-L2479 diff --git a/node_modules/proxy-from-env/index.js b/node_modules/proxy-from-env/index.js new file mode 100644 index 0000000..df75004 --- /dev/null +++ b/node_modules/proxy-from-env/index.js @@ -0,0 +1,108 @@ +'use strict'; + +var parseUrl = require('url').parse; + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +var stringEndsWith = String.prototype.endsWith || function(s) { + return s.length <= this.length && + this.indexOf(s, this.length - s.length) !== -1; +}; + +/** + * @param {string|object} url - The URL, or the result from url.parse. + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = + getEnv('npm_config_' + proto + '_proxy') || + getEnv(proto + '_proxy') || + getEnv('npm_config_proxy') || + getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = + (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !stringEndsWith.call(hostname, parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +exports.getProxyForUrl = getProxyForUrl; diff --git a/node_modules/proxy-from-env/package.json b/node_modules/proxy-from-env/package.json new file mode 100644 index 0000000..be2b845 --- /dev/null +++ b/node_modules/proxy-from-env/package.json @@ -0,0 +1,34 @@ +{ + "name": "proxy-from-env", + "version": "1.1.0", + "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", + "main": "index.js", + "scripts": { + "lint": "eslint *.js", + "test": "mocha ./test.js --reporter spec", + "test-coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/Rob--W/proxy-from-env.git" + }, + "keywords": [ + "proxy", + "http_proxy", + "https_proxy", + "no_proxy", + "environment" + ], + "author": "Rob Wu (https://robwu.nl/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/Rob--W/proxy-from-env/issues" + }, + "homepage": "https://github.com/Rob--W/proxy-from-env#readme", + "devDependencies": { + "coveralls": "^3.0.9", + "eslint": "^6.8.0", + "istanbul": "^0.4.5", + "mocha": "^7.1.0" + } +} diff --git a/node_modules/proxy-from-env/test.js b/node_modules/proxy-from-env/test.js new file mode 100644 index 0000000..abf6542 --- /dev/null +++ b/node_modules/proxy-from-env/test.js @@ -0,0 +1,483 @@ +/* eslint max-statements:0 */ +'use strict'; + +var assert = require('assert'); +var parseUrl = require('url').parse; + +var getProxyForUrl = require('./').getProxyForUrl; + +// Runs the callback with process.env temporarily set to env. +function runWithEnv(env, callback) { + var originalEnv = process.env; + process.env = env; + try { + callback(); + } finally { + process.env = originalEnv; + } +} + +// Defines a test case that checks whether getProxyForUrl(input) === expected. +function testProxyUrl(env, expected, input) { + assert(typeof env === 'object' && env !== null); + // Copy object to make sure that the in param does not get modified between + // the call of this function and the use of it below. + env = JSON.parse(JSON.stringify(env)); + + var title = 'getProxyForUrl(' + JSON.stringify(input) + ')' + + ' === ' + JSON.stringify(expected); + + // Save call stack for later use. + var stack = {}; + Error.captureStackTrace(stack, testProxyUrl); + // Only use the last stack frame because that shows where this function is + // called, and that is sufficient for our purpose. No need to flood the logs + // with an uninteresting stack trace. + stack = stack.stack.split('\n', 2)[1]; + + it(title, function() { + var actual; + runWithEnv(env, function() { + actual = getProxyForUrl(input); + }); + if (expected === actual) { + return; // Good! + } + try { + assert.strictEqual(expected, actual); // Create a formatted error message. + // Should not happen because previously we determined expected !== actual. + throw new Error('assert.strictEqual passed. This is impossible!'); + } catch (e) { + // Use the original stack trace, so we can see a helpful line number. + e.stack = e.message + stack; + throw e; + } + }); +} + +describe('getProxyForUrl', function() { + describe('No proxy variables', function() { + var env = {}; + testProxyUrl(env, '', 'http://example.com'); + testProxyUrl(env, '', 'https://example.com'); + testProxyUrl(env, '', 'ftp://example.com'); + }); + + describe('Invalid URLs', function() { + var env = {}; + env.ALL_PROXY = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'bogus'); + testProxyUrl(env, '', '//example.com'); + testProxyUrl(env, '', '://example.com'); + testProxyUrl(env, '', '://'); + testProxyUrl(env, '', '/path'); + testProxyUrl(env, '', ''); + testProxyUrl(env, '', 'http:'); + testProxyUrl(env, '', 'http:/'); + testProxyUrl(env, '', 'http://'); + testProxyUrl(env, '', 'prototype://'); + testProxyUrl(env, '', 'hasOwnProperty://'); + testProxyUrl(env, '', '__proto__://'); + testProxyUrl(env, '', undefined); + testProxyUrl(env, '', null); + testProxyUrl(env, '', {}); + testProxyUrl(env, '', {host: 'x', protocol: 1}); + testProxyUrl(env, '', {host: 1, protocol: 'x'}); + }); + + describe('http_proxy and HTTP_PROXY', function() { + var env = {}; + env.HTTP_PROXY = 'http://http-proxy'; + + testProxyUrl(env, '', 'https://example'); + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://http-proxy', parseUrl('http://example')); + + // eslint-disable-next-line camelcase + env.http_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + }); + + describe('http_proxy with non-sensical value', function() { + var env = {}; + // Crazy values should be passed as-is. It is the responsibility of the + // one who launches the application that the value makes sense. + // TODO: Should we be stricter and perform validation? + env.HTTP_PROXY = 'Crazy \n!() { ::// }'; + testProxyUrl(env, 'Crazy \n!() { ::// }', 'http://wow'); + + // The implementation assumes that the HTTP_PROXY environment variable is + // somewhat reasonable, and if the scheme is missing, it is added. + // Garbage in, garbage out some would say... + env.HTTP_PROXY = 'crazy without colon slash slash'; + testProxyUrl(env, 'http://crazy without colon slash slash', 'http://wow'); + }); + + describe('https_proxy and HTTPS_PROXY', function() { + var env = {}; + // Assert that there is no fall back to http_proxy + env.HTTP_PROXY = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'https://example'); + + env.HTTPS_PROXY = 'http://https-proxy'; + testProxyUrl(env, 'http://https-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.https_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + + describe('ftp_proxy', function() { + var env = {}; + // Something else than http_proxy / https, as a sanity check. + env.FTP_PROXY = 'http://ftp-proxy'; + + testProxyUrl(env, 'http://ftp-proxy', 'ftp://example'); + testProxyUrl(env, '', 'ftps://example'); + }); + + describe('all_proxy', function() { + var env = {}; + env.ALL_PROXY = 'http://catch-all'; + testProxyUrl(env, 'http://catch-all', 'https://example'); + + // eslint-disable-next-line camelcase + env.all_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + + describe('all_proxy without scheme', function() { + var env = {}; + env.ALL_PROXY = 'noscheme'; + testProxyUrl(env, 'http://noscheme', 'http://example'); + testProxyUrl(env, 'https://noscheme', 'https://example'); + + // The module does not impose restrictions on the scheme. + testProxyUrl(env, 'bogus-scheme://noscheme', 'bogus-scheme://example'); + + // But the URL should still be valid. + testProxyUrl(env, '', 'bogus'); + }); + + describe('no_proxy empty', function() { + var env = {}; + env.HTTPS_PROXY = 'http://proxy'; + + // NO_PROXY set but empty. + env.NO_PROXY = ''; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (comma). + env.NO_PROXY = ','; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (whitespace). + env.NO_PROXY = ' '; + testProxyUrl(env, 'http://proxy', 'https://example'); + + // No entries in NO_PROXY (multiple whitespace / commas). + env.NO_PROXY = ',\t,,,\n, ,\r'; + testProxyUrl(env, 'http://proxy', 'https://example'); + }); + + describe('no_proxy=example (single host)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'example'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:0'); + testProxyUrl(env, '', 'http://example:1337'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + testProxyUrl(env, 'http://proxy', 'http://host/example'); + }); + + describe('no_proxy=sub.example (subdomain)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'sub.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:0'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://no.sub.example'); + testProxyUrl(env, 'http://proxy', 'http://sub-example'); + testProxyUrl(env, 'http://proxy', 'http://example.sub'); + }); + + describe('no_proxy=example:80 (host + port)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = 'example:80'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:0'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + }); + + describe('no_proxy=.example (host suffix)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, '', 'http://a.b.example'); + }); + + describe('no_proxy=*', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = '*'; + testProxyUrl(env, '', 'http://example.com'); + }); + + describe('no_proxy=*.example (host suffix with *.)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '*.example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://example:80'); + testProxyUrl(env, 'http://proxy', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, '', 'http://a.b.example'); + }); + + describe('no_proxy=*example (substring suffix)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '*example'; + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, '', 'http://example:80'); + testProxyUrl(env, '', 'http://example:1337'); + testProxyUrl(env, '', 'http://sub.example'); + testProxyUrl(env, '', 'http://sub.example:80'); + testProxyUrl(env, '', 'http://sub.example:1337'); + testProxyUrl(env, '', 'http://prefexample'); + testProxyUrl(env, '', 'http://a.b.example'); + testProxyUrl(env, 'http://proxy', 'http://example.no'); + testProxyUrl(env, 'http://proxy', 'http://host/example'); + }); + + describe('no_proxy=.*example (arbitrary wildcards are NOT supported)', + function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '.*example'; + testProxyUrl(env, 'http://proxy', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://sub.example'); + testProxyUrl(env, 'http://proxy', 'http://prefexample'); + testProxyUrl(env, 'http://proxy', 'http://x.prefexample'); + testProxyUrl(env, 'http://proxy', 'http://a.b.example'); + }); + + describe('no_proxy=[::1],[::2]:80,10.0.0.1,10.0.0.2:80 (IP addresses)', + function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '[::1],[::2]:80,10.0.0.1,10.0.0.2:80'; + testProxyUrl(env, '', 'http://[::1]/'); + testProxyUrl(env, '', 'http://[::1]:80/'); + testProxyUrl(env, '', 'http://[::1]:1337/'); + + testProxyUrl(env, '', 'http://[::2]/'); + testProxyUrl(env, '', 'http://[::2]:80/'); + testProxyUrl(env, 'http://proxy', 'http://[::2]:1337/'); + + testProxyUrl(env, '', 'http://10.0.0.1/'); + testProxyUrl(env, '', 'http://10.0.0.1:80/'); + testProxyUrl(env, '', 'http://10.0.0.1:1337/'); + + testProxyUrl(env, '', 'http://10.0.0.2/'); + testProxyUrl(env, '', 'http://10.0.0.2:80/'); + testProxyUrl(env, 'http://proxy', 'http://10.0.0.2:1337/'); + }); + + describe('no_proxy=127.0.0.1/32 (CIDR is NOT supported)', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '127.0.0.1/32'; + testProxyUrl(env, 'http://proxy', 'http://127.0.0.1'); + testProxyUrl(env, 'http://proxy', 'http://127.0.0.1/32'); + }); + + describe('no_proxy=127.0.0.1 does NOT match localhost', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + + env.NO_PROXY = '127.0.0.1'; + testProxyUrl(env, '', 'http://127.0.0.1'); + // We're not performing DNS queries, so this shouldn't match. + testProxyUrl(env, 'http://proxy', 'http://localhost'); + }); + + describe('no_proxy with protocols that have a default port', function() { + var env = {}; + env.WS_PROXY = 'http://ws'; + env.WSS_PROXY = 'http://wss'; + env.HTTP_PROXY = 'http://http'; + env.HTTPS_PROXY = 'http://https'; + env.GOPHER_PROXY = 'http://gopher'; + env.FTP_PROXY = 'http://ftp'; + env.ALL_PROXY = 'http://all'; + + env.NO_PROXY = 'xxx:21,xxx:70,xxx:80,xxx:443'; + + testProxyUrl(env, '', 'http://xxx'); + testProxyUrl(env, '', 'http://xxx:80'); + testProxyUrl(env, 'http://http', 'http://xxx:1337'); + + testProxyUrl(env, '', 'ws://xxx'); + testProxyUrl(env, '', 'ws://xxx:80'); + testProxyUrl(env, 'http://ws', 'ws://xxx:1337'); + + testProxyUrl(env, '', 'https://xxx'); + testProxyUrl(env, '', 'https://xxx:443'); + testProxyUrl(env, 'http://https', 'https://xxx:1337'); + + testProxyUrl(env, '', 'wss://xxx'); + testProxyUrl(env, '', 'wss://xxx:443'); + testProxyUrl(env, 'http://wss', 'wss://xxx:1337'); + + testProxyUrl(env, '', 'gopher://xxx'); + testProxyUrl(env, '', 'gopher://xxx:70'); + testProxyUrl(env, 'http://gopher', 'gopher://xxx:1337'); + + testProxyUrl(env, '', 'ftp://xxx'); + testProxyUrl(env, '', 'ftp://xxx:21'); + testProxyUrl(env, 'http://ftp', 'ftp://xxx:1337'); + }); + + describe('no_proxy should not be case-sensitive', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = 'XXX,YYY,ZzZ'; + + testProxyUrl(env, '', 'http://xxx'); + testProxyUrl(env, '', 'http://XXX'); + testProxyUrl(env, '', 'http://yyy'); + testProxyUrl(env, '', 'http://YYY'); + testProxyUrl(env, '', 'http://ZzZ'); + testProxyUrl(env, '', 'http://zZz'); + }); + + describe('NPM proxy configuration', function() { + describe('npm_config_http_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://http-proxy'; + + testProxyUrl(env, '', 'https://example'); + testProxyUrl(env, 'http://http-proxy', 'http://example'); + + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + }); + // eslint-disable-next-line max-len + describe('npm_config_http_proxy should take precedence over HTTP_PROXY and npm_config_proxy', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://http-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + env.HTTP_PROXY = 'http://unexpected-proxy'; + + testProxyUrl(env, 'http://http-proxy', 'http://example'); + }); + describe('npm_config_https_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_http_proxy = 'http://unexpected.proxy'; + testProxyUrl(env, '', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://https-proxy'; + testProxyUrl(env, 'http://https-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'https://example'); + }); + // eslint-disable-next-line max-len + describe('npm_config_https_proxy should take precedence over HTTPS_PROXY and npm_config_proxy', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_https_proxy = 'http://https-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + env.HTTPS_PROXY = 'http://unexpected-proxy'; + + testProxyUrl(env, 'http://https-proxy', 'https://example'); + }); + describe('npm_config_proxy should work', function() { + var env = {}; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://http-proxy'; + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://http-proxy', 'https://example'); + + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://priority'; + testProxyUrl(env, 'http://priority', 'http://example'); + testProxyUrl(env, 'http://priority', 'https://example'); + }); + // eslint-disable-next-line max-len + describe('HTTP_PROXY and HTTPS_PROXY should take precedence over npm_config_proxy', function() { + var env = {}; + env.HTTP_PROXY = 'http://http-proxy'; + env.HTTPS_PROXY = 'http://https-proxy'; + // eslint-disable-next-line camelcase + env.npm_config_proxy = 'http://unexpected-proxy'; + testProxyUrl(env, 'http://http-proxy', 'http://example'); + testProxyUrl(env, 'http://https-proxy', 'https://example'); + }); + describe('npm_config_no_proxy should work', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + // eslint-disable-next-line camelcase + env.npm_config_no_proxy = 'example'; + + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); + }); + // eslint-disable-next-line max-len + describe('npm_config_no_proxy should take precedence over NO_PROXY', function() { + var env = {}; + env.HTTP_PROXY = 'http://proxy'; + env.NO_PROXY = 'otherwebsite'; + // eslint-disable-next-line camelcase + env.npm_config_no_proxy = 'example'; + + testProxyUrl(env, '', 'http://example'); + testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); + }); + }); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e29be4d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,102 @@ +{ + "name": "4team_final_MainVue", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^1.6.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a1af0ea --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "axios": "^1.6.8" + } +} From 1b1248755131431a64fb1a3229e337951ce99160 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Mon, 25 Mar 2024 17:24:44 +0900 Subject: [PATCH 013/101] Add .gitignore, add vue template --- .gitignore | 1 + Cypress-Program | 1 + package-lock.json | 102 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +++ 4 files changed, 109 insertions(+) create mode 100644 .gitignore create mode 160000 Cypress-Program create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/Cypress-Program b/Cypress-Program new file mode 160000 index 0000000..43e2f5c --- /dev/null +++ b/Cypress-Program @@ -0,0 +1 @@ +Subproject commit 43e2f5c3ee7bc9b3ced4ff4ca8d65094403585c7 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e29be4d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,102 @@ +{ + "name": "4team_final_MainVue", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^1.6.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a1af0ea --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "axios": "^1.6.8" + } +} From 9ad47af1f2dd0e529fd92c9773545be80993470d Mon Sep 17 00:00:00 2001 From: b1-4-tl <125641153+CoffeerLatte@users.noreply.github.com> Date: Mon, 25 Mar 2024 17:30:54 +0900 Subject: [PATCH 014/101] Delete node_modules directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit node_modules는 .gitignore 대상이며 실수로 올라간 파일이기에 삭제 --- node_modules/.package-lock.json | 97 - node_modules/asynckit/LICENSE | 21 - node_modules/asynckit/README.md | 233 - node_modules/asynckit/bench.js | 76 - node_modules/asynckit/index.js | 6 - node_modules/asynckit/lib/abort.js | 29 - node_modules/asynckit/lib/async.js | 34 - node_modules/asynckit/lib/defer.js | 26 - node_modules/asynckit/lib/iterate.js | 75 - .../asynckit/lib/readable_asynckit.js | 91 - .../asynckit/lib/readable_parallel.js | 25 - node_modules/asynckit/lib/readable_serial.js | 25 - .../asynckit/lib/readable_serial_ordered.js | 29 - node_modules/asynckit/lib/state.js | 37 - node_modules/asynckit/lib/streamify.js | 141 - node_modules/asynckit/lib/terminator.js | 29 - node_modules/asynckit/package.json | 63 - node_modules/asynckit/parallel.js | 43 - node_modules/asynckit/serial.js | 17 - node_modules/asynckit/serialOrdered.js | 75 - node_modules/asynckit/stream.js | 21 - node_modules/axios/CHANGELOG.md | 874 -- node_modules/axios/LICENSE | 7 - node_modules/axios/MIGRATION_GUIDE.md | 3 - node_modules/axios/README.md | 1650 ---- node_modules/axios/SECURITY.md | 6 - node_modules/axios/dist/axios.js | 3448 ------- node_modules/axios/dist/axios.js.map | 1 - node_modules/axios/dist/axios.min.js | 2 - node_modules/axios/dist/axios.min.js.map | 1 - node_modules/axios/dist/browser/axios.cjs | 3258 ------- node_modules/axios/dist/browser/axios.cjs.map | 1 - node_modules/axios/dist/esm/axios.js | 3281 ------- node_modules/axios/dist/esm/axios.js.map | 1 - node_modules/axios/dist/esm/axios.min.js | 2 - node_modules/axios/dist/esm/axios.min.js.map | 1 - node_modules/axios/dist/node/axios.cjs | 4354 --------- node_modules/axios/dist/node/axios.cjs.map | 1 - node_modules/axios/index.d.cts | 542 -- node_modules/axios/index.d.ts | 559 -- node_modules/axios/index.js | 43 - node_modules/axios/lib/adapters/README.md | 37 - node_modules/axios/lib/adapters/adapters.js | 77 - node_modules/axios/lib/adapters/http.js | 685 -- node_modules/axios/lib/adapters/xhr.js | 260 - node_modules/axios/lib/axios.js | 89 - node_modules/axios/lib/cancel/CancelToken.js | 121 - .../axios/lib/cancel/CanceledError.js | 25 - node_modules/axios/lib/cancel/isCancel.js | 5 - node_modules/axios/lib/core/Axios.js | 225 - node_modules/axios/lib/core/AxiosError.js | 100 - node_modules/axios/lib/core/AxiosHeaders.js | 298 - .../axios/lib/core/InterceptorManager.js | 71 - node_modules/axios/lib/core/README.md | 8 - node_modules/axios/lib/core/buildFullPath.js | 21 - .../axios/lib/core/dispatchRequest.js | 81 - node_modules/axios/lib/core/mergeConfig.js | 106 - node_modules/axios/lib/core/settle.js | 27 - node_modules/axios/lib/core/transformData.js | 28 - node_modules/axios/lib/defaults/index.js | 156 - .../axios/lib/defaults/transitional.js | 7 - node_modules/axios/lib/env/README.md | 3 - .../axios/lib/env/classes/FormData.js | 2 - node_modules/axios/lib/env/data.js | 1 - .../axios/lib/helpers/AxiosTransformStream.js | 191 - .../axios/lib/helpers/AxiosURLSearchParams.js | 58 - .../axios/lib/helpers/HttpStatusCode.js | 71 - node_modules/axios/lib/helpers/README.md | 7 - .../lib/helpers/ZlibHeaderTransformStream.js | 28 - node_modules/axios/lib/helpers/bind.js | 7 - node_modules/axios/lib/helpers/buildURL.js | 63 - node_modules/axios/lib/helpers/callbackify.js | 16 - node_modules/axios/lib/helpers/combineURLs.js | 15 - node_modules/axios/lib/helpers/cookies.js | 42 - .../axios/lib/helpers/deprecatedMethod.js | 26 - .../axios/lib/helpers/formDataToJSON.js | 95 - .../axios/lib/helpers/formDataToStream.js | 111 - node_modules/axios/lib/helpers/fromDataURI.js | 53 - .../axios/lib/helpers/isAbsoluteURL.js | 15 - .../axios/lib/helpers/isAxiosError.js | 14 - .../axios/lib/helpers/isURLSameOrigin.js | 67 - node_modules/axios/lib/helpers/null.js | 2 - .../axios/lib/helpers/parseHeaders.js | 55 - .../axios/lib/helpers/parseProtocol.js | 6 - node_modules/axios/lib/helpers/readBlob.js | 15 - node_modules/axios/lib/helpers/speedometer.js | 55 - node_modules/axios/lib/helpers/spread.js | 28 - node_modules/axios/lib/helpers/throttle.js | 33 - node_modules/axios/lib/helpers/toFormData.js | 219 - .../axios/lib/helpers/toURLEncodedForm.js | 18 - node_modules/axios/lib/helpers/validator.js | 91 - .../lib/platform/browser/classes/Blob.js | 3 - .../lib/platform/browser/classes/FormData.js | 3 - .../browser/classes/URLSearchParams.js | 4 - .../axios/lib/platform/browser/index.js | 13 - .../axios/lib/platform/common/utils.js | 47 - node_modules/axios/lib/platform/index.js | 7 - .../lib/platform/node/classes/FormData.js | 3 - .../platform/node/classes/URLSearchParams.js | 4 - node_modules/axios/lib/platform/node/index.js | 12 - node_modules/axios/lib/utils.js | 723 -- node_modules/axios/package.json | 218 - node_modules/combined-stream/License | 19 - node_modules/combined-stream/Readme.md | 138 - .../combined-stream/lib/combined_stream.js | 208 - node_modules/combined-stream/package.json | 25 - node_modules/combined-stream/yarn.lock | 17 - node_modules/delayed-stream/.npmignore | 1 - node_modules/delayed-stream/License | 19 - node_modules/delayed-stream/Makefile | 7 - node_modules/delayed-stream/Readme.md | 141 - .../delayed-stream/lib/delayed_stream.js | 107 - node_modules/delayed-stream/package.json | 27 - node_modules/follow-redirects/LICENSE | 18 - node_modules/follow-redirects/README.md | 155 - node_modules/follow-redirects/debug.js | 15 - node_modules/follow-redirects/http.js | 1 - node_modules/follow-redirects/https.js | 1 - node_modules/follow-redirects/index.js | 672 -- node_modules/follow-redirects/package.json | 58 - node_modules/form-data/License | 19 - node_modules/form-data/README.md.bak | 358 - node_modules/form-data/Readme.md | 358 - node_modules/form-data/index.d.ts | 62 - node_modules/form-data/lib/browser.js | 2 - node_modules/form-data/lib/form_data.js | 501 - node_modules/form-data/lib/populate.js | 10 - node_modules/form-data/package.json | 68 - node_modules/mime-db/HISTORY.md | 507 - node_modules/mime-db/LICENSE | 23 - node_modules/mime-db/README.md | 100 - node_modules/mime-db/db.json | 8519 ----------------- node_modules/mime-db/index.js | 12 - node_modules/mime-db/package.json | 60 - node_modules/mime-types/HISTORY.md | 397 - node_modules/mime-types/LICENSE | 23 - node_modules/mime-types/README.md | 113 - node_modules/mime-types/index.js | 188 - node_modules/mime-types/package.json | 44 - node_modules/proxy-from-env/.eslintrc | 29 - node_modules/proxy-from-env/.travis.yml | 10 - node_modules/proxy-from-env/LICENSE | 20 - node_modules/proxy-from-env/README.md | 131 - node_modules/proxy-from-env/index.js | 108 - node_modules/proxy-from-env/package.json | 34 - node_modules/proxy-from-env/test.js | 483 - 146 files changed, 37907 deletions(-) delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/asynckit/LICENSE delete mode 100644 node_modules/asynckit/README.md delete mode 100644 node_modules/asynckit/bench.js delete mode 100644 node_modules/asynckit/index.js delete mode 100644 node_modules/asynckit/lib/abort.js delete mode 100644 node_modules/asynckit/lib/async.js delete mode 100644 node_modules/asynckit/lib/defer.js delete mode 100644 node_modules/asynckit/lib/iterate.js delete mode 100644 node_modules/asynckit/lib/readable_asynckit.js delete mode 100644 node_modules/asynckit/lib/readable_parallel.js delete mode 100644 node_modules/asynckit/lib/readable_serial.js delete mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js delete mode 100644 node_modules/asynckit/lib/state.js delete mode 100644 node_modules/asynckit/lib/streamify.js delete mode 100644 node_modules/asynckit/lib/terminator.js delete mode 100644 node_modules/asynckit/package.json delete mode 100644 node_modules/asynckit/parallel.js delete mode 100644 node_modules/asynckit/serial.js delete mode 100644 node_modules/asynckit/serialOrdered.js delete mode 100644 node_modules/asynckit/stream.js delete mode 100644 node_modules/axios/CHANGELOG.md delete mode 100644 node_modules/axios/LICENSE delete mode 100644 node_modules/axios/MIGRATION_GUIDE.md delete mode 100644 node_modules/axios/README.md delete mode 100644 node_modules/axios/SECURITY.md delete mode 100644 node_modules/axios/dist/axios.js delete mode 100644 node_modules/axios/dist/axios.js.map delete mode 100644 node_modules/axios/dist/axios.min.js delete mode 100644 node_modules/axios/dist/axios.min.js.map delete mode 100644 node_modules/axios/dist/browser/axios.cjs delete mode 100644 node_modules/axios/dist/browser/axios.cjs.map delete mode 100644 node_modules/axios/dist/esm/axios.js delete mode 100644 node_modules/axios/dist/esm/axios.js.map delete mode 100644 node_modules/axios/dist/esm/axios.min.js delete mode 100644 node_modules/axios/dist/esm/axios.min.js.map delete mode 100644 node_modules/axios/dist/node/axios.cjs delete mode 100644 node_modules/axios/dist/node/axios.cjs.map delete mode 100644 node_modules/axios/index.d.cts delete mode 100644 node_modules/axios/index.d.ts delete mode 100644 node_modules/axios/index.js delete mode 100644 node_modules/axios/lib/adapters/README.md delete mode 100644 node_modules/axios/lib/adapters/adapters.js delete mode 100755 node_modules/axios/lib/adapters/http.js delete mode 100644 node_modules/axios/lib/adapters/xhr.js delete mode 100644 node_modules/axios/lib/axios.js delete mode 100644 node_modules/axios/lib/cancel/CancelToken.js delete mode 100644 node_modules/axios/lib/cancel/CanceledError.js delete mode 100644 node_modules/axios/lib/cancel/isCancel.js delete mode 100644 node_modules/axios/lib/core/Axios.js delete mode 100644 node_modules/axios/lib/core/AxiosError.js delete mode 100644 node_modules/axios/lib/core/AxiosHeaders.js delete mode 100644 node_modules/axios/lib/core/InterceptorManager.js delete mode 100644 node_modules/axios/lib/core/README.md delete mode 100644 node_modules/axios/lib/core/buildFullPath.js delete mode 100644 node_modules/axios/lib/core/dispatchRequest.js delete mode 100644 node_modules/axios/lib/core/mergeConfig.js delete mode 100644 node_modules/axios/lib/core/settle.js delete mode 100644 node_modules/axios/lib/core/transformData.js delete mode 100644 node_modules/axios/lib/defaults/index.js delete mode 100644 node_modules/axios/lib/defaults/transitional.js delete mode 100644 node_modules/axios/lib/env/README.md delete mode 100644 node_modules/axios/lib/env/classes/FormData.js delete mode 100644 node_modules/axios/lib/env/data.js delete mode 100644 node_modules/axios/lib/helpers/AxiosTransformStream.js delete mode 100644 node_modules/axios/lib/helpers/AxiosURLSearchParams.js delete mode 100644 node_modules/axios/lib/helpers/HttpStatusCode.js delete mode 100644 node_modules/axios/lib/helpers/README.md delete mode 100644 node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js delete mode 100644 node_modules/axios/lib/helpers/bind.js delete mode 100644 node_modules/axios/lib/helpers/buildURL.js delete mode 100644 node_modules/axios/lib/helpers/callbackify.js delete mode 100644 node_modules/axios/lib/helpers/combineURLs.js delete mode 100644 node_modules/axios/lib/helpers/cookies.js delete mode 100644 node_modules/axios/lib/helpers/deprecatedMethod.js delete mode 100644 node_modules/axios/lib/helpers/formDataToJSON.js delete mode 100644 node_modules/axios/lib/helpers/formDataToStream.js delete mode 100644 node_modules/axios/lib/helpers/fromDataURI.js delete mode 100644 node_modules/axios/lib/helpers/isAbsoluteURL.js delete mode 100644 node_modules/axios/lib/helpers/isAxiosError.js delete mode 100644 node_modules/axios/lib/helpers/isURLSameOrigin.js delete mode 100644 node_modules/axios/lib/helpers/null.js delete mode 100644 node_modules/axios/lib/helpers/parseHeaders.js delete mode 100644 node_modules/axios/lib/helpers/parseProtocol.js delete mode 100644 node_modules/axios/lib/helpers/readBlob.js delete mode 100644 node_modules/axios/lib/helpers/speedometer.js delete mode 100644 node_modules/axios/lib/helpers/spread.js delete mode 100644 node_modules/axios/lib/helpers/throttle.js delete mode 100644 node_modules/axios/lib/helpers/toFormData.js delete mode 100644 node_modules/axios/lib/helpers/toURLEncodedForm.js delete mode 100644 node_modules/axios/lib/helpers/validator.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/Blob.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/FormData.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/URLSearchParams.js delete mode 100644 node_modules/axios/lib/platform/browser/index.js delete mode 100644 node_modules/axios/lib/platform/common/utils.js delete mode 100644 node_modules/axios/lib/platform/index.js delete mode 100644 node_modules/axios/lib/platform/node/classes/FormData.js delete mode 100644 node_modules/axios/lib/platform/node/classes/URLSearchParams.js delete mode 100644 node_modules/axios/lib/platform/node/index.js delete mode 100644 node_modules/axios/lib/utils.js delete mode 100644 node_modules/axios/package.json delete mode 100644 node_modules/combined-stream/License delete mode 100644 node_modules/combined-stream/Readme.md delete mode 100644 node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/combined-stream/package.json delete mode 100644 node_modules/combined-stream/yarn.lock delete mode 100644 node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/delayed-stream/License delete mode 100644 node_modules/delayed-stream/Makefile delete mode 100644 node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/delayed-stream/package.json delete mode 100644 node_modules/follow-redirects/LICENSE delete mode 100644 node_modules/follow-redirects/README.md delete mode 100644 node_modules/follow-redirects/debug.js delete mode 100644 node_modules/follow-redirects/http.js delete mode 100644 node_modules/follow-redirects/https.js delete mode 100644 node_modules/follow-redirects/index.js delete mode 100644 node_modules/follow-redirects/package.json delete mode 100644 node_modules/form-data/License delete mode 100644 node_modules/form-data/README.md.bak delete mode 100644 node_modules/form-data/Readme.md delete mode 100644 node_modules/form-data/index.d.ts delete mode 100644 node_modules/form-data/lib/browser.js delete mode 100644 node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/form-data/lib/populate.js delete mode 100644 node_modules/form-data/package.json delete mode 100644 node_modules/mime-db/HISTORY.md delete mode 100644 node_modules/mime-db/LICENSE delete mode 100644 node_modules/mime-db/README.md delete mode 100644 node_modules/mime-db/db.json delete mode 100644 node_modules/mime-db/index.js delete mode 100644 node_modules/mime-db/package.json delete mode 100644 node_modules/mime-types/HISTORY.md delete mode 100644 node_modules/mime-types/LICENSE delete mode 100644 node_modules/mime-types/README.md delete mode 100644 node_modules/mime-types/index.js delete mode 100644 node_modules/mime-types/package.json delete mode 100644 node_modules/proxy-from-env/.eslintrc delete mode 100644 node_modules/proxy-from-env/.travis.yml delete mode 100644 node_modules/proxy-from-env/LICENSE delete mode 100644 node_modules/proxy-from-env/README.md delete mode 100644 node_modules/proxy-from-env/index.js delete mode 100644 node_modules/proxy-from-env/package.json delete mode 100644 node_modules/proxy-from-env/test.js diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index 408a6a0..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "4team_final_MainVue", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - } - } -} diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE deleted file mode 100644 index c9eca5d..0000000 --- a/node_modules/asynckit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Alex Indigo - -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/node_modules/asynckit/README.md b/node_modules/asynckit/README.md deleted file mode 100644 index ddcc7e6..0000000 --- a/node_modules/asynckit/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) - -Minimal async jobs utility library, with streams support. - -[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) - -[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) -[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) -[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) - - - -AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. -Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. - -It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. - -| compression | size | -| :----------------- | -------: | -| asynckit.js | 12.34 kB | -| asynckit.min.js | 4.11 kB | -| asynckit.min.js.gz | 1.47 kB | - - -## Install - -```sh -$ npm install --save asynckit -``` - -## Examples - -### Parallel Jobs - -Runs iterator over provided array in parallel. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will terminate rest of the active jobs (if abort function is provided) -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var parallel = require('asynckit').parallel - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , target = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// async job accepts one element from the array -// and a callback function -function asyncJob(item, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var parallel = require('asynckit/parallel') - , assert = require('assert') - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] - , target = [] - , keys = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); - assert.deepEqual(keys, expectedKeys); -}); - -// supports full value, key, callback (shortcut) interface -function asyncJob(item, key, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - keys.push(key); - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). - -### Serial Jobs - -Runs iterator over provided array sequentially. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will not proceed to the rest of the items in the list -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var serial = require('asynckit/serial') - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// extended interface (item, key, callback) -// also supported for arrays -function asyncJob(item, key, cb) -{ - target.push(key); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var serial = require('asynckit').serial - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , target = [] - ; - - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// shortcut interface (item, callback) -// works for object as well as for the arrays -function asyncJob(item, cb) -{ - target.push(item); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). - -_Note: Since _object_ is an _unordered_ collection of properties, -it may produce unexpected results with sequential iterations. -Whenever order of the jobs' execution is important please use `serialOrdered` method._ - -### Ordered Serial Iterations - -TBD - -For example [compare-property](compare-property) package. - -### Streaming interface - -TBD - -## Want to Know More? - -More examples can be found in [test folder](test/). - -Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. - -## License - -AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js deleted file mode 100644 index c612f1a..0000000 --- a/node_modules/asynckit/bench.js +++ /dev/null @@ -1,76 +0,0 @@ -/* eslint no-console: "off" */ - -var asynckit = require('./') - , async = require('async') - , assert = require('assert') - , expected = 0 - ; - -var Benchmark = require('benchmark'); -var suite = new Benchmark.Suite; - -var source = []; -for (var z = 1; z < 100; z++) -{ - source.push(z); - expected += z; -} - -suite -// add tests - -.add('async.map', function(deferred) -{ - var total = 0; - - async.map(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -.add('asynckit.parallel', function(deferred) -{ - var total = 0; - - asynckit.parallel(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -// add listeners -.on('cycle', function(ev) -{ - console.log(String(ev.target)); -}) -.on('complete', function() -{ - console.log('Fastest is ' + this.filter('fastest').map('name')); -}) -// run async -.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js deleted file mode 100644 index 455f945..0000000 --- a/node_modules/asynckit/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = -{ - parallel : require('./parallel.js'), - serial : require('./serial.js'), - serialOrdered : require('./serialOrdered.js') -}; diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js deleted file mode 100644 index 114367e..0000000 --- a/node_modules/asynckit/lib/abort.js +++ /dev/null @@ -1,29 +0,0 @@ -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js deleted file mode 100644 index 7f1288a..0000000 --- a/node_modules/asynckit/lib/async.js +++ /dev/null @@ -1,34 +0,0 @@ -var defer = require('./defer.js'); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js deleted file mode 100644 index b67110c..0000000 --- a/node_modules/asynckit/lib/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js deleted file mode 100644 index 5d2839a..0000000 --- a/node_modules/asynckit/lib/iterate.js +++ /dev/null @@ -1,75 +0,0 @@ -var async = require('./async.js') - , abort = require('./abort.js') - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; -} diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js deleted file mode 100644 index 78ad240..0000000 --- a/node_modules/asynckit/lib/readable_asynckit.js +++ /dev/null @@ -1,91 +0,0 @@ -var streamify = require('./streamify.js') - , defer = require('./defer.js') - ; - -// API -module.exports = ReadableAsyncKit; - -/** - * Base constructor for all streams - * used to hold properties/methods - */ -function ReadableAsyncKit() -{ - ReadableAsyncKit.super_.apply(this, arguments); - - // list of active jobs - this.jobs = {}; - - // add stream methods - this.destroy = destroy; - this._start = _start; - this._read = _read; -} - -/** - * Destroys readable stream, - * by aborting outstanding jobs - * - * @returns {void} - */ -function destroy() -{ - if (this.destroyed) - { - return; - } - - this.destroyed = true; - - if (typeof this.terminator == 'function') - { - this.terminator(); - } -} - -/** - * Starts provided jobs in async manner - * - * @private - */ -function _start() -{ - // first argument – runner function - var runner = arguments[0] - // take away first argument - , args = Array.prototype.slice.call(arguments, 1) - // second argument - input data - , input = args[0] - // last argument - result callback - , endCb = streamify.callback.call(this, args[args.length - 1]) - ; - - args[args.length - 1] = endCb; - // third argument - iterator - args[1] = streamify.iterator.call(this, args[1]); - - // allow time for proper setup - defer(function() - { - if (!this.destroyed) - { - this.terminator = runner.apply(null, args); - } - else - { - endCb(null, Array.isArray(input) ? [] : {}); - } - }.bind(this)); -} - - -/** - * Implement _read to comply with Readable streams - * Doesn't really make sense for flowing object mode - * - * @private - */ -function _read() -{ - -} diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js deleted file mode 100644 index 5d2929f..0000000 --- a/node_modules/asynckit/lib/readable_parallel.js +++ /dev/null @@ -1,25 +0,0 @@ -var parallel = require('../parallel.js'); - -// API -module.exports = ReadableParallel; - -/** - * Streaming wrapper to `asynckit.parallel` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableParallel(list, iterator, callback) -{ - if (!(this instanceof ReadableParallel)) - { - return new ReadableParallel(list, iterator, callback); - } - - // turn on object mode - ReadableParallel.super_.call(this, {objectMode: true}); - - this._start(parallel, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js deleted file mode 100644 index 7822698..0000000 --- a/node_modules/asynckit/lib/readable_serial.js +++ /dev/null @@ -1,25 +0,0 @@ -var serial = require('../serial.js'); - -// API -module.exports = ReadableSerial; - -/** - * Streaming wrapper to `asynckit.serial` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerial(list, iterator, callback) -{ - if (!(this instanceof ReadableSerial)) - { - return new ReadableSerial(list, iterator, callback); - } - - // turn on object mode - ReadableSerial.super_.call(this, {objectMode: true}); - - this._start(serial, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js deleted file mode 100644 index 3de89c4..0000000 --- a/node_modules/asynckit/lib/readable_serial_ordered.js +++ /dev/null @@ -1,29 +0,0 @@ -var serialOrdered = require('../serialOrdered.js'); - -// API -module.exports = ReadableSerialOrdered; -// expose sort helpers -module.exports.ascending = serialOrdered.ascending; -module.exports.descending = serialOrdered.descending; - -/** - * Streaming wrapper to `asynckit.serialOrdered` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerialOrdered(list, iterator, sortMethod, callback) -{ - if (!(this instanceof ReadableSerialOrdered)) - { - return new ReadableSerialOrdered(list, iterator, sortMethod, callback); - } - - // turn on object mode - ReadableSerialOrdered.super_.call(this, {objectMode: true}); - - this._start(serialOrdered, list, iterator, sortMethod, callback); -} diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js deleted file mode 100644 index cbea7ad..0000000 --- a/node_modules/asynckit/lib/state.js +++ /dev/null @@ -1,37 +0,0 @@ -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js deleted file mode 100644 index f56a1c9..0000000 --- a/node_modules/asynckit/lib/streamify.js +++ /dev/null @@ -1,141 +0,0 @@ -var async = require('./async.js'); - -// API -module.exports = { - iterator: wrapIterator, - callback: wrapCallback -}; - -/** - * Wraps iterators with long signature - * - * @this ReadableAsyncKit# - * @param {function} iterator - function to wrap - * @returns {function} - wrapped function - */ -function wrapIterator(iterator) -{ - var stream = this; - - return function(item, key, cb) - { - var aborter - , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) - ; - - stream.jobs[key] = wrappedCb; - - // it's either shortcut (item, cb) - if (iterator.length == 2) - { - aborter = iterator(item, wrappedCb); - } - // or long format (item, key, cb) - else - { - aborter = iterator(item, key, wrappedCb); - } - - return aborter; - }; -} - -/** - * Wraps provided callback function - * allowing to execute snitch function before - * real callback - * - * @this ReadableAsyncKit# - * @param {function} callback - function to wrap - * @returns {function} - wrapped function - */ -function wrapCallback(callback) -{ - var stream = this; - - var wrapped = function(error, result) - { - return finisher.call(stream, error, result, callback); - }; - - return wrapped; -} - -/** - * Wraps provided iterator callback function - * makes sure snitch only called once, - * but passes secondary calls to the original callback - * - * @this ReadableAsyncKit# - * @param {function} callback - callback to wrap - * @param {number|string} key - iteration key - * @returns {function} wrapped callback - */ -function wrapIteratorCallback(callback, key) -{ - var stream = this; - - return function(error, output) - { - // don't repeat yourself - if (!(key in stream.jobs)) - { - callback(error, output); - return; - } - - // clean up jobs - delete stream.jobs[key]; - - return streamer.call(stream, error, {key: key, value: output}, callback); - }; -} - -/** - * Stream wrapper for iterator callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects iterator results - */ -function streamer(error, output, callback) -{ - if (error && !this.error) - { - this.error = error; - this.pause(); - this.emit('error', error); - // send back value only, as expected - callback(error, output && output.value); - return; - } - - // stream stuff - this.push(output); - - // back to original track - // send back value only, as expected - callback(error, output && output.value); -} - -/** - * Stream wrapper for finishing callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects final results - */ -function finisher(error, output, callback) -{ - // signal end of the stream - // only for successfully finished streams - if (!error) - { - this.push(null); - } - - // back to original track - callback(error, output); -} diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js deleted file mode 100644 index d6eb992..0000000 --- a/node_modules/asynckit/lib/terminator.js +++ /dev/null @@ -1,29 +0,0 @@ -var abort = require('./abort.js') - , async = require('./async.js') - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json deleted file mode 100644 index 51147d6..0000000 --- a/node_modules/asynckit/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "asynckit", - "version": "0.4.0", - "description": "Minimal async jobs utility library, with streams support", - "main": "index.js", - "scripts": { - "clean": "rimraf coverage", - "lint": "eslint *.js lib/*.js test/*.js", - "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", - "win-test": "tape test/test-*.js", - "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", - "report": "istanbul report", - "size": "browserify index.js | size-table asynckit", - "debug": "tape test/test-*.js" - }, - "pre-commit": [ - "clean", - "lint", - "test", - "browser", - "report", - "size" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/alexindigo/asynckit.git" - }, - "keywords": [ - "async", - "jobs", - "parallel", - "serial", - "iterator", - "array", - "object", - "stream", - "destroy", - "terminate", - "abort" - ], - "author": "Alex Indigo ", - "license": "MIT", - "bugs": { - "url": "https://github.com/alexindigo/asynckit/issues" - }, - "homepage": "https://github.com/alexindigo/asynckit#readme", - "devDependencies": { - "browserify": "^13.0.0", - "browserify-istanbul": "^2.0.0", - "coveralls": "^2.11.9", - "eslint": "^2.9.0", - "istanbul": "^0.4.3", - "obake": "^0.1.2", - "phantomjs-prebuilt": "^2.1.7", - "pre-commit": "^1.1.3", - "reamde": "^1.1.0", - "rimraf": "^2.5.2", - "size-table": "^0.2.0", - "tap-spec": "^4.1.1", - "tape": "^4.5.1" - }, - "dependencies": {} -} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js deleted file mode 100644 index 3c50344..0000000 --- a/node_modules/asynckit/parallel.js +++ /dev/null @@ -1,43 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js deleted file mode 100644 index 6cd949a..0000000 --- a/node_modules/asynckit/serial.js +++ /dev/null @@ -1,17 +0,0 @@ -var serialOrdered = require('./serialOrdered.js'); - -// Public API -module.exports = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js deleted file mode 100644 index 607eafe..0000000 --- a/node_modules/asynckit/serialOrdered.js +++ /dev/null @@ -1,75 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js deleted file mode 100644 index d43465f..0000000 --- a/node_modules/asynckit/stream.js +++ /dev/null @@ -1,21 +0,0 @@ -var inherits = require('util').inherits - , Readable = require('stream').Readable - , ReadableAsyncKit = require('./lib/readable_asynckit.js') - , ReadableParallel = require('./lib/readable_parallel.js') - , ReadableSerial = require('./lib/readable_serial.js') - , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') - ; - -// API -module.exports = -{ - parallel : ReadableParallel, - serial : ReadableSerial, - serialOrdered : ReadableSerialOrdered, -}; - -inherits(ReadableAsyncKit, Readable); - -inherits(ReadableParallel, ReadableAsyncKit); -inherits(ReadableSerial, ReadableAsyncKit); -inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md deleted file mode 100644 index 87a1407..0000000 --- a/node_modules/axios/CHANGELOG.md +++ /dev/null @@ -1,874 +0,0 @@ -# Changelog - -## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15) - - -### Bug Fixes - -* **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb)) -* **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1)) -* **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27)) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman "+4572/-3446 (#6238 )") -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-0 (#6231 )") -- avatar [Mitchell](https://github.com/Creaous "+9/-9 (#6300 )") -- avatar [Emmanuel](https://github.com/mannoeu "+2/-2 (#6196 )") -- avatar [Lucas Keller](https://github.com/ljkeller "+3/-0 (#6194 )") -- avatar [Aditya Mogili](https://github.com/ADITYA-176 "+1/-1 ()") -- avatar [Miroslav Petrov](https://github.com/petrovmiroslav "+1/-1 (#6243 )") - -## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) - - -### Bug Fixes - -* capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-26 (#6203 )") -- avatar [zhoulixiang](https://github.com/zh-lx "+0/-3 (#6186 )") - -## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24) - - -### Bug Fixes - -* fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39)) -* wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab)) - -### Contributors to this release - -- avatar [Ilya Priven](https://github.com/ikonst "+91/-8 (#5987 )") -- avatar [Zao Soula](https://github.com/zaosoula "+6/-6 (#5778 )") - -## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05) - - -### Bug Fixes - -* **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c)) -* **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+41/-6 (#6176 #6175 )") -- avatar [Jay](https://github.com/jasonsaayman "+6/-1 ()") - -## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03) - - -### Bug Fixes - -* **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e)) -* **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8)) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman "+34/-6 ()") -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+34/-3 (#6172 #6167 )") -- avatar [Guy Nesher](https://github.com/gnesher "+10/-10 (#6163 )") - -## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26) - - -### Bug Fixes - -* Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d)) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman "+15/-6 (#6145 )") -- avatar [Willian Agostini](https://github.com/WillianAgostini "+17/-2 (#6132 )") -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+3/-0 (#6084 )") - -## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14) - - -### Features - -* **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc)) - -### PRs -- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) -``` - -📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. -You should now use withXSRFToken along with withCredential to get the old behavior. -This functionality is considered as a fix. -``` - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )") -- avatar [Ng Choon Khon (CK)](https://github.com/ckng0221 "+4/-4 (#6073 )") -- avatar [Muhammad Noman](https://github.com/mnomanmemon "+2/-2 (#6048 )") - -## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08) - - -### Bug Fixes - -* **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288)) -* **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+432/-65 (#6059 #6056 #6055 )") -- avatar [Fabian Meyer](https://github.com/meyfa "+5/-2 (#5835 )") - -### PRs -- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) -``` - -📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. -You should now use withXSRFToken along with withCredential to get the old behavior. -This functionality is considered as a fix. -``` - -# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26) - - -### Bug Fixes - -* **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0)) -* **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8)) -* **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09)) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+449/-114 (#6032 #6021 #6011 #5932 #5931 )") -- avatar [Valentin Panov](https://github.com/valentin-panov "+4/-4 (#6028 )") -- avatar [Rinku Chaudhari](https://github.com/therealrinku "+1/-1 (#5889 )") - -## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26) - - -### Bug Fixes - -* **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859)) -* **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92)) -* **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd)) -* **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+89/-18 (#5919 #5917 )") -- avatar [David Dallas](https://github.com/DavidJDallas "+11/-5 ()") -- avatar [Sean Sattler](https://github.com/fb-sean "+2/-8 ()") -- avatar [Mustafa Ateş Uzun](https://github.com/0o001 "+4/-4 ()") -- avatar [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki "+2/-1 (#5892 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+1/-1 ()") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26) - - -### Bug Fixes - -* **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d)) -* **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628)) -* **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273)) -* **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17)) - - -### Features - -* export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1)) -* **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+66/-29 (#5839 #5837 #5836 #5832 #5831 )") -- avatar [夜葬](https://github.com/geekact "+42/-0 (#5324 )") -- avatar [Jonathan Budiman](https://github.com/JBudiman00 "+30/-0 (#5788 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-5 (#5791 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27) - - -### Bug Fixes - -* **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1)) -* **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09)) - - -### Features - -* **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb)) -* **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf)) - - -### Performance Improvements - -* **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+151/-16 (#5684 #5339 #5679 #5678 #5677 )") -- avatar [Arthur Fiorette](https://github.com/arthurfiorette "+19/-19 (#5525 )") -- avatar [PIYUSH NEGI](https://github.com/npiyush97 "+2/-18 (#5670 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19) - - -### Bug Fixes - -* **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2)) -* **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+48/-10 (#5665 #5661 #5663 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+2/-0 (#5445 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05) - - -### Bug Fixes - -* **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841)) -* **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+28/-10 (#5633 #5584 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22) - - -### Bug Fixes - -* **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a)) -* **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+38/-26 (#5564 )") -- avatar [lcysgsg](https://github.com/lcysgsg "+4/-0 (#5548 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-0 (#5444 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13) - - -### Bug Fixes - -* **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d)) -* **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1)) -* **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+11/-7 (#5545 #5535 #5542 )") -- avatar [陈若枫](https://github.com/ruofee "+2/-2 (#5467 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03) - - -### Bug Fixes - -* **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c)) -* **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+2/-1 (#5530 #5528 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01) - - -### Bug Fixes - -* **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120)) -* **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+27/-8 (#5521 #5518 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31) - - -### Bug Fixes - -* **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959)) -* **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c)) - - -### Features - -* **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )") -- avatar [ItsNotGoodName](https://github.com/ItsNotGoodName "+43/-2 (#5497 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28) - - -### Bug Fixes - -* **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26)) -* **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+24/-9 (#5503 #5502 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26) - - -### Bug Fixes - -* **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+82/-54 (#5499 )") -- ![avatar](https://avatars.githubusercontent.com/u/20516159?v=4&s=16) [Elliot Ford](https://github.com/EFord36 "+1/-1 (#5462 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22) - - -### Bug Fixes - -* **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0)) -* **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+242/-108 (#5486 #5482 )") -- ![avatar](https://avatars.githubusercontent.com/u/9430821?v=4&s=16) [Daniel Hillmann](https://github.com/hilleer "+1/-1 (#5478 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10) - - -### Bug Fixes - -* **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.2] - 2022-12-29 - -### Fixed -- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392) -- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377) -- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376) -- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375) -- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353) -- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345) - -### Chores -- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406) -- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403) -- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398) -- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397) -- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393) -- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342) -- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384) -- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364) - -### Contributors to this release -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- ![avatar](https://avatars.githubusercontent.com/u/1652293?v=4&s=16) [Winnie](https://github.com/winniehell) - -## [1.2.1] - 2022-12-05 - -### Changed -- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151) - -### Fixed -- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922) -- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022) -- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306) -- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139) - -### Refactors -- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308) -- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956) - -### Chores -- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307) -- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159) - -### Contributors to this release - -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Zachary Lysobey](https://github.com/zachlysobey) -- [Kevin Ennis](https://github.com/kevincennis) -- [Philipp Loose](https://github.com/phloose) -- [secondl1ght](https://github.com/secondl1ght) -- [wenzheng](https://github.com/0x30) -- [Ivan Barsukov](https://github.com/ovarn) -- [Arthur Fiorette](https://github.com/arthurfiorette) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.0] - 2022-11-10 - -### Changed - -- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162) -- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225) - -### Fixed - -- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224) -- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196) -- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071) -- fix: __dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269) -- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247) -- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250) - -### Refactors -- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) - -### Chores - -- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243) -- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077) -- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116) -- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205) -- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235) -- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266) -- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295) -- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294) -- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241) -- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245) -- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119) -- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265) -- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218) -- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170) -- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194) -- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193) -- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184) -- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197) -- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261) -- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207) -- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137) -- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025) - -### Contributors to this release - -- [Maddy Miller](https://github.com/me4502) -- [Amit Saini](https://github.com/amitsainii) -- [ecyrbe](https://github.com/ecyrbe) -- [Ikko Ashimine](https://github.com/eltociear) -- [Geeth Gunnampalli](https://github.com/thetechie7) -- [Shreem Asati](https://github.com/shreem-123) -- [Frieder Bluemle](https://github.com/friederbluemle) -- [윤세영](https://github.com/yunseyeong) -- [Claudio Busatto](https://github.com/cjcbusatto) -- [Remco Haszing](https://github.com/remcohaszing) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Csaba Maulis](https://github.com/om4csaba) -- [MoPaMo](https://github.com/MoPaMo) -- [Daniel Fjeldstad](https://github.com/w3bdesign) -- [Adrien Brunet](https://github.com/adrien-may) -- [Frazer Smith](https://github.com/Fdawgs) -- [HaiTao](https://github.com/836334258) -- [AZM](https://github.com/aziyatali) -- [relbns](https://github.com/relbns) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.1.3] - 2022-10-15 - -### Added - -- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) - -### Fixed - -- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109) -- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108) -- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097) -- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103) -- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060) -- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085) - -### Chores - -- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046) -- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054) -- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061) -- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084) - -### Contributors to this release - -- [Jason Saayman](https://github.com/jasonsaayman) -- [scarf](https://github.com/scarf005) -- [Lenz Weber-Tronic](https://github.com/phryneas) -- [Arvindh](https://github.com/itsarvindh) -- [Félix Legrelle](https://github.com/FelixLgr) -- [Patrick Petrovic](https://github.com/ppati000) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [littledian](https://github.com/littledian) -- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.1.2] - 2022-10-07 - -### Fixed - -- Fixed broken exports for UMD builds. - -### Contributors to this release - -- [Jason Saayman](https://github.com/jasonsaayman) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.1.1] - 2022-10-07 - -### Fixed - -- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful. - -### Contributors to this release - -- [Jason Saayman](https://github.com/jasonsaayman) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.1.0] - 2022-10-06 - -### Fixed - -- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003) -- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018) -- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021) -- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010) -- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030) -- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036) - -### Contributors to this release - -- [Trim21](https://github.com/trim21) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [shingo.sasaki](https://github.com/s-sasaki-0529) -- [Ivan Pepelko](https://github.com/ivanpepelko) -- [Richard Kořínek](https://github.com/risa) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.0.0] - 2022-10-04 - -### Added - -- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624) -- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654) -- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596) -- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668) -- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096) -- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207) -- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229) -- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238) -- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248) -- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319) -- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580) -- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678) -- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436) -- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704) -- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711) -- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714) -- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715) -- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322) -- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721) -- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293) -- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725) -- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675) -- URL params serializer [#4734](https://github.com/axios/axios/pull/4734) -- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735) -- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804) -- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852) -- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903) -- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934) - -### Changed - -- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665) -- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590) -- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659) -- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492) -- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468) -- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387) -- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072) -- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185) -- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344) -- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224) -- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722) -- Updated Docs [#4742](https://github.com/axios/axios/pull/4742) -- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787) - - -### Deprecated -- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case. - -### Removed - -- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656) -- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596) -- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544) - -### Fixed - -- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649) -- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599) -- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587) -- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532) -- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505) -- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500) -- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414) -- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673) -- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435) -- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201) -- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232) -- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557) -- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261) -- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701) -- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708) -- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717) -- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718) -- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334) -- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731) -- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728) -- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743) -- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745) -- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738) -- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785) -- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805) -- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815) -- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819) -- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820) -- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857) -- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862) -- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874) -- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949) -- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960) - -### Chores -- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765) -- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770) -- Included dependency review [#4771](https://github.com/axios/axios/pull/4771) -- Update security.md [#4784](https://github.com/axios/axios/pull/4784) -- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854) -- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875) -- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941) -- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970) -- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993) -- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825) -- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853) -- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942) - -### Security - -- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) - -### Contributors to this release - -- [Bertrand Marron](https://github.com/tusbar) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Dan Mooney](https://github.com/danmooney) -- [Michael Li](https://github.com/xiaoyu-tamu) -- [aong](https://github.com/yxwzaxns) -- [Des Preston](https://github.com/despreston) -- [Ted Robertson](https://github.com/tredondo) -- [zhoulixiang](https://github.com/zh-lx) -- [Arthur Fiorette](https://github.com/arthurfiorette) -- [Kumar Shanu](https://github.com/Kr-Shanu) -- [JALAL](https://github.com/JLL32) -- [Jingyi Lin](https://github.com/MageeLin) -- [Philipp Loose](https://github.com/phloose) -- [Alexander Shchukin](https://github.com/sashsvamir) -- [Dave Cardwell](https://github.com/davecardwell) -- [Cat Scarlet](https://github.com/catscarlet) -- [Luca Pizzini](https://github.com/lpizzinidev) -- [Kai](https://github.com/Schweinepriester) -- [Maxime Bargiel](https://github.com/mbargiel) -- [Brian Helba](https://github.com/brianhelba) -- [reslear](https://github.com/reslear) -- [Jamie Slome](https://github.com/JamieSlome) -- [Landro3](https://github.com/Landro3) -- [rafw87](https://github.com/rafw87) -- [Afzal Sayed](https://github.com/afzalsayed96) -- [Koki Oyatsu](https://github.com/kaishuu0123) -- [Dave](https://github.com/wangcch) -- [暴走老七](https://github.com/baozouai) -- [Spencer](https://github.com/spalger) -- [Adrian Wieprzkowicz](https://github.com/Argeento) -- [Jamie Telin](https://github.com/lejahmie) -- [毛呆](https://github.com/aweikalee) -- [Kirill Shakirov](https://github.com/turisap) -- [Rraji Abdelbari](https://github.com/estarossa0) -- [Jelle Schutter](https://github.com/jelleschutter) -- [Tom Ceuppens](https://github.com/KyorCode) -- [Johann Cooper](https://github.com/JohannCooper) -- [Dimitris Halatsis](https://github.com/mitsos1os) -- [chenjigeng](https://github.com/chenjigeng) -- [João Gabriel Quaresma](https://github.com/joaoGabriel55) -- [Victor Augusto](https://github.com/VictorAugDB) -- [neilnaveen](https://github.com/neilnaveen) -- [Pavlos](https://github.com/psmoros) -- [Kiryl Valkovich](https://github.com/visortelle) -- [Naveen](https://github.com/naveensrinivasan) -- [wenzheng](https://github.com/0x30) -- [hcwhan](https://github.com/hcwhan) -- [Bassel Rachid](https://github.com/basselworkforce) -- [Grégoire Pineau](https://github.com/lyrixx) -- [felipedamin](https://github.com/felipedamin) -- [Karl Horky](https://github.com/karlhorky) -- [Yue JIN](https://github.com/kingyue737) -- [Usman Ali Siddiqui](https://github.com/usman250994) -- [WD](https://github.com/techbirds) -- [Günther Foidl](https://github.com/gfoidl) -- [Stephen Jennings](https://github.com/jennings) -- [C.T.Lin](https://github.com/chentsulin) -- [mia-z](https://github.com/mia-z) -- [Parth Banathia](https://github.com/Parth0105) -- [parth0105pluang](https://github.com/parth0105pluang) -- [Marco Weber](https://github.com/mrcwbr) -- [Luca Pizzini](https://github.com/lpizzinidev) -- [Willian Agostini](https://github.com/WillianAgostini) -- [Huyen Nguyen](https://github.com/huyenltnguyen) \ No newline at end of file diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE deleted file mode 100644 index 05006a5..0000000 --- a/node_modules/axios/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2014-present Matt Zabriskie & Collaborators - -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/node_modules/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md deleted file mode 100644 index ec3ae0d..0000000 --- a/node_modules/axios/MIGRATION_GUIDE.md +++ /dev/null @@ -1,3 +0,0 @@ -# Migration Guide - -## 0.x.x -> 1.1.0 diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md deleted file mode 100644 index 04e7601..0000000 --- a/node_modules/axios/README.md +++ /dev/null @@ -1,1650 +0,0 @@ -

- Platinum sponsors -
-

- -
- - - - - - - - -

Alloy is the integration development platform that makes it simple and
fast for SaaS companies to launch critical user-facing integrations.

-

- Sign up free • - Documentation -

-

-
- -

- Gold sponsors -

-

- -
- - - - - - - -

API-first authentication, authorization, and fraud prevention

-

- Website • - DocumentationNode.js Backend SDK -

-
- - -

-
-
-
- -

Promise based HTTP client for the browser and node.js

- -

- Website • - Documentation -

- -
- -[![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) -[![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) -[![Build status](https://img.shields.io/github/actions/workflow/status/axios/axios/ci.yml?branch=v1.x&label=CI&logo=github&style=flat-square)](https://github.com/axios/axios/actions/workflows/ci.yml) -[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&style=flat-square)](https://gitpod.io/#https://github.com/axios/axios) -[![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) -[![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=axios&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.now.sh/result?p=axios) -[![npm bundle size](https://img.shields.io/bundlephobia/minzip/axios?style=flat-square)](https://bundlephobia.com/package/axios@latest) -[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](https://npm-stat.com/charts.html?package=axios) -[![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) -[![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) -[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) - - - - -
- -## Table of Contents - - - [Features](#features) - - [Browser Support](#browser-support) - - [Installing](#installing) - - [Package manager](#package-manager) - - [CDN](#cdn) - - [Example](#example) - - [Axios API](#axios-api) - - [Request method aliases](#request-method-aliases) - - [Concurrency 👎](#concurrency-deprecated) - - [Creating an instance](#creating-an-instance) - - [Instance methods](#instance-methods) - - [Request Config](#request-config) - - [Response Schema](#response-schema) - - [Config Defaults](#config-defaults) - - [Global axios defaults](#global-axios-defaults) - - [Custom instance defaults](#custom-instance-defaults) - - [Config order of precedence](#config-order-of-precedence) - - [Interceptors](#interceptors) - - [Multiple Interceptors](#multiple-interceptors) - - [Handling Errors](#handling-errors) - - [Cancellation](#cancellation) - - [AbortController](#abortcontroller) - - [CancelToken 👎](#canceltoken-deprecated) - - [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) - - [URLSearchParams](#urlsearchparams) - - [Query string](#query-string-older-browsers) - - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams) - - [Using multipart/form-data format](#using-multipartform-data-format) - - [FormData](#formdata) - - [🆕 Automatic serialization](#-automatic-serialization-to-formdata) - - [Files Posting](#files-posting) - - [HTML Form Posting](#-html-form-posting-browser) - - [🆕 Progress capturing](#-progress-capturing) - - [🆕 Rate limiting](#-progress-capturing) - - [🆕 AxiosHeaders](#-axiosheaders) - - [Semver](#semver) - - [Promises](#promises) - - [TypeScript](#typescript) - - [Resources](#resources) - - [Credits](#credits) - - [License](#license) - -## Features - -- Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser -- Make [http](https://nodejs.org/api/http.html) requests from node.js -- Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API -- Intercept request and response -- Transform request and response data -- Cancel requests -- Automatic transforms for [JSON](https://www.json.org/json-en.html) data -- 🆕 Automatic data object serialization to `multipart/form-data` and `x-www-form-urlencoded` body encodings -- Client side support for protecting against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) - -## Browser Support - -![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | ![IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ---- | --- | --- | --- | --- | --- | -Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | - -[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) - -## Installing - -### Package manager - -Using npm: - -```bash -$ npm install axios -``` - -Using bower: - -```bash -$ bower install axios -``` - -Using yarn: - -```bash -$ yarn add axios -``` - -Using pnpm: - -```bash -$ pnpm add axios -``` - -Once the package is installed, you can import the library using `import` or `require` approach: - -```js -import axios, {isCancel, AxiosError} from 'axios'; -``` - -You can also use the default export, since the named export is just a re-export from the Axios factory: - -```js -import axios from 'axios'; - -console.log(axios.isCancel('something')); -```` - -If you use `require` for importing, **only default export is available**: - -```js -const axios = require('axios'); - -console.log(axios.isCancel('something')); -``` - -For cases where something went wrong when trying to import a module into a custom or legacy environment, -you can try importing the module package directly: - -```js -const axios = require('axios/dist/browser/axios.cjs'); // browser commonJS bundle (ES2017) -// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017) -``` - -### CDN - -Using jsDelivr CDN (ES5 UMD browser module): - -```html - -``` - -Using unpkg CDN: - -```html - -``` - -## Example - -> **Note**: CommonJS usage -> In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`, use the following approach: - -```js -import axios from 'axios'; -//const axios = require('axios'); // legacy way - -// Make a request for a user with a given ID -axios.get('/user?ID=12345') - .then(function (response) { - // handle success - console.log(response); - }) - .catch(function (error) { - // handle error - console.log(error); - }) - .finally(function () { - // always executed - }); - -// Optionally the request above could also be done as -axios.get('/user', { - params: { - ID: 12345 - } - }) - .then(function (response) { - console.log(response); - }) - .catch(function (error) { - console.log(error); - }) - .finally(function () { - // always executed - }); - -// Want to use async/await? Add the `async` keyword to your outer function/method. -async function getUser() { - try { - const response = await axios.get('/user?ID=12345'); - console.log(response); - } catch (error) { - console.error(error); - } -} -``` - -> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet -> Explorer and older browsers, so use with caution. - -Performing a `POST` request - -```js -axios.post('/user', { - firstName: 'Fred', - lastName: 'Flintstone' - }) - .then(function (response) { - console.log(response); - }) - .catch(function (error) { - console.log(error); - }); -``` - -Performing multiple concurrent requests - -```js -function getUserAccount() { - return axios.get('/user/12345'); -} - -function getUserPermissions() { - return axios.get('/user/12345/permissions'); -} - -Promise.all([getUserAccount(), getUserPermissions()]) - .then(function (results) { - const acct = results[0]; - const perm = results[1]; - }); -``` - -## axios API - -Requests can be made by passing the relevant config to `axios`. - -##### axios(config) - -```js -// Send a POST request -axios({ - method: 'post', - url: '/user/12345', - data: { - firstName: 'Fred', - lastName: 'Flintstone' - } -}); -``` - -```js -// GET request for remote image in node.js -axios({ - method: 'get', - url: 'https://bit.ly/2mTM3nY', - responseType: 'stream' -}) - .then(function (response) { - response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) - }); -``` - -##### axios(url[, config]) - -```js -// Send a GET request (default method) -axios('/user/12345'); -``` - -### Request method aliases - -For convenience, aliases have been provided for all common request methods. - -##### axios.request(config) -##### axios.get(url[, config]) -##### axios.delete(url[, config]) -##### axios.head(url[, config]) -##### axios.options(url[, config]) -##### axios.post(url[, data[, config]]) -##### axios.put(url[, data[, config]]) -##### axios.patch(url[, data[, config]]) - -###### NOTE -When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. - -### Concurrency (Deprecated) -Please use `Promise.all` to replace the below functions. - -Helper functions for dealing with concurrent requests. - -axios.all(iterable) -axios.spread(callback) - -### Creating an instance - -You can create a new instance of axios with a custom config. - -##### axios.create([config]) - -```js -const instance = axios.create({ - baseURL: 'https://some-domain.com/api/', - timeout: 1000, - headers: {'X-Custom-Header': 'foobar'} -}); -``` - -### Instance methods - -The available instance methods are listed below. The specified config will be merged with the instance config. - -##### axios#request(config) -##### axios#get(url[, config]) -##### axios#delete(url[, config]) -##### axios#head(url[, config]) -##### axios#options(url[, config]) -##### axios#post(url[, data[, config]]) -##### axios#put(url[, data[, config]]) -##### axios#patch(url[, data[, config]]) -##### axios#getUri([config]) - -## Request Config - -These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. - -```js -{ - // `url` is the server URL that will be used for the request - url: '/user', - - // `method` is the request method to be used when making the request - method: 'get', // default - - // `baseURL` will be prepended to `url` unless `url` is absolute. - // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs - // to methods of that instance. - baseURL: 'https://some-domain.com/api/', - - // `transformRequest` allows changes to the request data before it is sent to the server - // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' - // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, - // FormData or Stream - // You may modify the headers object. - transformRequest: [function (data, headers) { - // Do whatever you want to transform the data - - return data; - }], - - // `transformResponse` allows changes to the response data to be made before - // it is passed to then/catch - transformResponse: [function (data) { - // Do whatever you want to transform the data - - return data; - }], - - // `headers` are custom headers to be sent - headers: {'X-Requested-With': 'XMLHttpRequest'}, - - // `params` are the URL parameters to be sent with the request - // Must be a plain object or a URLSearchParams object - params: { - ID: 12345 - }, - - // `paramsSerializer` is an optional config that allows you to customize serializing `params`. - paramsSerializer: { - - //Custom encoder function which sends key/value pairs in an iterative fashion. - encode?: (param: string): string => { /* Do custom operations here and return transformed string */ }, - - // Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour. - serialize?: (params: Record, options?: ParamsSerializerOptions ), - - //Configuration for formatting array indexes in the params. - indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes). - }, - - // `data` is the data to be sent as the request body - // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH' - // When no `transformRequest` is set, must be of one of the following types: - // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams - // - Browser only: FormData, File, Blob - // - Node only: Stream, Buffer, FormData (form-data package) - data: { - firstName: 'Fred' - }, - - // syntax alternative to send data into the body - // method post - // only the value is sent, not the key - data: 'Country=Brasil&City=Belo Horizonte', - - // `timeout` specifies the number of milliseconds before the request times out. - // If the request takes longer than `timeout`, the request will be aborted. - timeout: 1000, // default is `0` (no timeout) - - // `withCredentials` indicates whether or not cross-site Access-Control requests - // should be made using credentials - withCredentials: false, // default - - // `adapter` allows custom handling of requests which makes testing easier. - // Return a promise and supply a valid response (see lib/adapters/README.md). - adapter: function (config) { - /* ... */ - }, - - // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. - // This will set an `Authorization` header, overwriting any existing - // `Authorization` custom headers you have set using `headers`. - // Please note that only HTTP Basic auth is configurable through this parameter. - // For Bearer tokens and such, use `Authorization` custom headers instead. - auth: { - username: 'janedoe', - password: 's00pers3cret' - }, - - // `responseType` indicates the type of data that the server will respond with - // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' - // browser only: 'blob' - responseType: 'json', // default - - // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) - // Note: Ignored for `responseType` of 'stream' or client-side requests - // options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url', - // 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8', - // 'utf8', 'UTF8', 'utf16le', 'UTF16LE' - responseEncoding: 'utf8', // default - - // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token - xsrfCookieName: 'XSRF-TOKEN', // default - - // `xsrfHeaderName` is the name of the http header that carries the xsrf token value - xsrfHeaderName: 'X-XSRF-TOKEN', // default - - // `undefined` (default) - set XSRF header only for the same origin requests - withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), - - // `onUploadProgress` allows handling of progress events for uploads - // browser & node.js - onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) { - // Do whatever you want with the Axios progress event - }, - - // `onDownloadProgress` allows handling of progress events for downloads - // browser & node.js - onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) { - // Do whatever you want with the Axios progress event - }, - - // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js - maxContentLength: 2000, - - // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed - maxBodyLength: 2000, - - // `validateStatus` defines whether to resolve or reject the promise for a given - // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` - // or `undefined`), the promise will be resolved; otherwise, the promise will be - // rejected. - validateStatus: function (status) { - return status >= 200 && status < 300; // default - }, - - // `maxRedirects` defines the maximum number of redirects to follow in node.js. - // If set to 0, no redirects will be followed. - maxRedirects: 21, // default - - // `beforeRedirect` defines a function that will be called before redirect. - // Use this to adjust the request options upon redirecting, - // to inspect the latest response headers, - // or to cancel the request by throwing an error - // If maxRedirects is set to 0, `beforeRedirect` is not used. - beforeRedirect: (options, { headers }) => { - if (options.hostname === "example.com") { - options.auth = "user:password"; - } - }, - - // `socketPath` defines a UNIX Socket to be used in node.js. - // e.g. '/var/run/docker.sock' to send requests to the docker daemon. - // Only either `socketPath` or `proxy` can be specified. - // If both are specified, `socketPath` is used. - socketPath: null, // default - - // `transport` determines the transport method that will be used to make the request. If defined, it will be used. Otherwise, if `maxRedirects` is 0, the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, which can handle redirects. - transport: undefined, // default - - // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http - // and https requests, respectively, in node.js. This allows options to be added like - // `keepAlive` that are not enabled by default. - httpAgent: new http.Agent({ keepAlive: true }), - httpsAgent: new https.Agent({ keepAlive: true }), - - // `proxy` defines the hostname, port, and protocol of the proxy server. - // You can also define your proxy using the conventional `http_proxy` and - // `https_proxy` environment variables. If you are using environment variables - // for your proxy configuration, you can also define a `no_proxy` environment - // variable as a comma-separated list of domains that should not be proxied. - // Use `false` to disable proxies, ignoring environment variables. - // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and - // supplies credentials. - // This will set an `Proxy-Authorization` header, overwriting any existing - // `Proxy-Authorization` custom headers you have set using `headers`. - // If the proxy server uses HTTPS, then you must set the protocol to `https`. - proxy: { - protocol: 'https', - host: '127.0.0.1', - // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined - port: 9000, - auth: { - username: 'mikeymike', - password: 'rapunz3l' - } - }, - - // `cancelToken` specifies a cancel token that can be used to cancel the request - // (see Cancellation section below for details) - cancelToken: new CancelToken(function (cancel) { - }), - - // an alternative way to cancel Axios requests using AbortController - signal: new AbortController().signal, - - // `decompress` indicates whether or not the response body should be decompressed - // automatically. If set to `true` will also remove the 'content-encoding' header - // from the responses objects of all decompressed responses - // - Node only (XHR cannot turn off decompression) - decompress: true, // default - - // `insecureHTTPParser` boolean. - // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. - // This may allow interoperability with non-conformant HTTP implementations. - // Using the insecure parser should be avoided. - // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback - // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none - insecureHTTPParser: undefined, // default - - // transitional options for backward compatibility that may be removed in the newer versions - transitional: { - // silent JSON parsing mode - // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) - // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json') - silentJSONParsing: true, // default value for the current Axios version - - // try to parse the response string as JSON even if `responseType` is not 'json' - forcedJSONParsing: true, - - // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts - clarifyTimeoutError: false, - }, - - env: { - // The FormData class to be used to automatically serialize the payload into a FormData object - FormData: window?.FormData || global?.FormData - }, - - formSerializer: { - visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values - dots: boolean; // use dots instead of brackets format - metaTokens: boolean; // keep special endings like {} in parameter key - indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes - }, - - // http adapter only (node.js) - maxRate: [ - 100 * 1024, // 100KB/s upload limit, - 100 * 1024 // 100KB/s download limit - ] -} -``` - -## Response Schema - -The response for a request contains the following information. - -```js -{ - // `data` is the response that was provided by the server - data: {}, - - // `status` is the HTTP status code from the server response - status: 200, - - // `statusText` is the HTTP status message from the server response - statusText: 'OK', - - // `headers` the HTTP headers that the server responded with - // All header names are lowercase and can be accessed using the bracket notation. - // Example: `response.headers['content-type']` - headers: {}, - - // `config` is the config that was provided to `axios` for the request - config: {}, - - // `request` is the request that generated this response - // It is the last ClientRequest instance in node.js (in redirects) - // and an XMLHttpRequest instance in the browser - request: {} -} -``` - -When using `then`, you will receive the response as follows: - -```js -axios.get('/user/12345') - .then(function (response) { - console.log(response.data); - console.log(response.status); - console.log(response.statusText); - console.log(response.headers); - console.log(response.config); - }); -``` - -When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. - -## Config Defaults - -You can specify config defaults that will be applied to every request. - -### Global axios defaults - -```js -axios.defaults.baseURL = 'https://api.example.com'; - -// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. -// See below for an example using Custom instance defaults instead. -axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; - -axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; -``` - -### Custom instance defaults - -```js -// Set config defaults when creating the instance -const instance = axios.create({ - baseURL: 'https://api.example.com' -}); - -// Alter defaults after instance has been created -instance.defaults.headers.common['Authorization'] = AUTH_TOKEN; -``` - -### Config order of precedence - -Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults/index.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. - -```js -// Create an instance using the config defaults provided by the library -// At this point the timeout config value is `0` as is the default for the library -const instance = axios.create(); - -// Override timeout default for the library -// Now all requests using this instance will wait 2.5 seconds before timing out -instance.defaults.timeout = 2500; - -// Override timeout for this request as it's known to take a long time -instance.get('/longRequest', { - timeout: 5000 -}); -``` - -## Interceptors - -You can intercept requests or responses before they are handled by `then` or `catch`. - -```js -// Add a request interceptor -axios.interceptors.request.use(function (config) { - // Do something before request is sent - return config; - }, function (error) { - // Do something with request error - return Promise.reject(error); - }); - -// Add a response interceptor -axios.interceptors.response.use(function (response) { - // Any status code that lie within the range of 2xx cause this function to trigger - // Do something with response data - return response; - }, function (error) { - // Any status codes that falls outside the range of 2xx cause this function to trigger - // Do something with response error - return Promise.reject(error); - }); -``` - -If you need to remove an interceptor later you can. - -```js -const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); -axios.interceptors.request.eject(myInterceptor); -``` - -You can also clear all interceptors for requests or responses. -```js -const instance = axios.create(); -instance.interceptors.request.use(function () {/*...*/}); -instance.interceptors.request.clear(); // Removes interceptors from requests -instance.interceptors.response.use(function () {/*...*/}); -instance.interceptors.response.clear(); // Removes interceptors from responses -``` - -You can add interceptors to a custom instance of axios. - -```js -const instance = axios.create(); -instance.interceptors.request.use(function () {/*...*/}); -``` - -When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay -in the execution of your axios request when the main thread is blocked (a promise is created under the hood for -the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag -to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. - -```js -axios.interceptors.request.use(function (config) { - config.headers.test = 'I am only a header!'; - return config; -}, null, { synchronous: true }); -``` - -If you want to execute a particular interceptor based on a runtime check, -you can add a `runWhen` function to the options object. The interceptor will not be executed **if and only if** the return -of `runWhen` is `false`. The function will be called with the config -object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an -asynchronous request interceptor that only needs to run at certain times. - -```js -function onGetCall(config) { - return config.method === 'get'; -} -axios.interceptors.request.use(function (config) { - config.headers.test = 'special get headers'; - return config; -}, null, { runWhen: onGetCall }); -``` - -### Multiple Interceptors - -Given you add multiple response interceptors -and when the response was fulfilled -- then each interceptor is executed -- then they are executed in the order they were added -- then only the last interceptor's result is returned -- then every interceptor receives the result of its predecessor -- and when the fulfillment-interceptor throws - - then the following fulfillment-interceptor is not called - - then the following rejection-interceptor is called - - once caught, another following fulfill-interceptor is called again (just like in a promise chain). - -Read [the interceptor tests](./test/specs/interceptors.spec.js) for seeing all this in code. - -## Error Types - -There are many different axios error messages that can appear that can provide basic information about the specifics of the error and where opportunities may lie in debugging. - -The general structure of axios errors is as follows: -| Property | Definition | -| -------- | ---------- | -| message | A quick summary of the error message and the status it failed with. | -| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. | -| stack | Provides the stack trace of the error. | -| config | An axios config object with specific instance configurations defined by the user from when the request was made | -| code | Represents an axios identified error. The table below lists out specific definitions for internal axios error. | -| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings. - -Below is a list of potential axios identified error -| Code | Definition | -| -------- | ---------- | -| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. | -| ERR_BAD_OPTION | Invalid option provided in axios configuration. | -| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. | -| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. | -| ERR_NETWORK | Network-related issue. -| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. -| ERR_DEPRECATED | Deprecated feature or method used in axios. -| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. -| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. | -| ERR_CANCELED | Feature or method is canceled explicitly by the user. -| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. -| ERR_INVALID_URL | Invalid URL provided for axios request. - -## Handling Errors - -the default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. - -```js -axios.get('/user/12345') - .catch(function (error) { - if (error.response) { - // The request was made and the server responded with a status code - // that falls out of the range of 2xx - console.log(error.response.data); - console.log(error.response.status); - console.log(error.response.headers); - } else if (error.request) { - // The request was made but no response was received - // `error.request` is an instance of XMLHttpRequest in the browser and an instance of - // http.ClientRequest in node.js - console.log(error.request); - } else { - // Something happened in setting up the request that triggered an Error - console.log('Error', error.message); - } - console.log(error.config); - }); -``` - -Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error. - -```js -axios.get('/user/12345', { - validateStatus: function (status) { - return status < 500; // Resolve only if the status code is less than 500 - } -}) -``` - -Using `toJSON` you get an object with more information about the HTTP error. - -```js -axios.get('/user/12345') - .catch(function (error) { - console.log(error.toJSON()); - }); -``` - -## Cancellation - -### AbortController - -Starting from `v0.22.0` Axios supports AbortController to cancel requests in fetch API way: - -```js -const controller = new AbortController(); - -axios.get('/foo/bar', { - signal: controller.signal -}).then(function(response) { - //... -}); -// cancel the request -controller.abort() -``` - -### CancelToken `👎deprecated` - -You can also cancel a request using a *CancelToken*. - -> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises). - -> This API is deprecated since v0.22.0 and shouldn't be used in new projects - -You can create a cancel token using the `CancelToken.source` factory as shown below: - -```js -const CancelToken = axios.CancelToken; -const source = CancelToken.source(); - -axios.get('/user/12345', { - cancelToken: source.token -}).catch(function (thrown) { - if (axios.isCancel(thrown)) { - console.log('Request canceled', thrown.message); - } else { - // handle error - } -}); - -axios.post('/user/12345', { - name: 'new name' -}, { - cancelToken: source.token -}) - -// cancel the request (the message parameter is optional) -source.cancel('Operation canceled by the user.'); -``` - -You can also create a cancel token by passing an executor function to the `CancelToken` constructor: - -```js -const CancelToken = axios.CancelToken; -let cancel; - -axios.get('/user/12345', { - cancelToken: new CancelToken(function executor(c) { - // An executor function receives a cancel function as a parameter - cancel = c; - }) -}); - -// cancel the request -cancel(); -``` - -> **Note:** you can cancel several requests with the same cancel token/abort controller. -> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request. - -> During the transition period, you can use both cancellation APIs, even for the same request: - -## Using `application/x-www-form-urlencoded` format - -### URLSearchParams - -By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded` format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers,and [ Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018). - -```js -const params = new URLSearchParams({ foo: 'bar' }); -params.append('extraparam', 'value'); -axios.post('/foo', params); -``` - -### Query string (Older browsers) - -For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). - -Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: - -```js -const qs = require('qs'); -axios.post('/foo', qs.stringify({ 'bar': 123 })); -``` - -Or in another way (ES6), - -```js -import qs from 'qs'; -const data = { 'bar': 123 }; -const options = { - method: 'POST', - headers: { 'content-type': 'application/x-www-form-urlencoded' }, - data: qs.stringify(data), - url, -}; -axios(options); -``` - -### Older Node.js versions - -For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: - -```js -const querystring = require('querystring'); -axios.post('https://something.com/', querystring.stringify({ foo: 'bar' })); -``` - -You can also use the [`qs`](https://github.com/ljharb/qs) library. - -> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. - -### 🆕 Automatic serialization to URLSearchParams - -Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded". - -```js -const data = { - x: 1, - arr: [1, 2, 3], - arr2: [1, [2], 3], - users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], -}; - -await axios.postForm('https://postman-echo.com/post', data, - {headers: {'content-type': 'application/x-www-form-urlencoded'}} -); -``` - -The server will handle it as: - -```js - { - x: '1', - 'arr[]': [ '1', '2', '3' ], - 'arr2[0]': '1', - 'arr2[1][0]': '2', - 'arr2[2]': '3', - 'arr3[]': [ '1', '2', '3' ], - 'users[0][name]': 'Peter', - 'users[0][surname]': 'griffin', - 'users[1][name]': 'Thomas', - 'users[1][surname]': 'Anderson' - } -```` - -If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically - -```js - var app = express(); - - app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies - - app.post('/', function (req, res, next) { - // echo body as JSON - res.send(JSON.stringify(req.body)); - }); - - server = app.listen(3000); -``` - -## Using `multipart/form-data` format - -### FormData - -To send the data as a `multipart/formdata` you need to pass a formData instance as a payload. -Setting the `Content-Type` header is not required as Axios guesses it based on the payload type. - -```js -const formData = new FormData(); -formData.append('foo', 'bar'); - -axios.post('https://httpbin.org/post', formData); -``` - -In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: - -```js -const FormData = require('form-data'); - -const form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); - -axios.post('https://example.com', form) -``` - -### 🆕 Automatic serialization to FormData - -Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` -header is set to `multipart/form-data`. - -The following request will submit the data in a FormData format (Browser & Node.js): - -```js -import axios from 'axios'; - -axios.post('https://httpbin.org/post', {x: 1}, { - headers: { - 'Content-Type': 'multipart/form-data' - } -}).then(({data}) => console.log(data)); -``` - -In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. - -You can overload the FormData class by setting the `env.FormData` config variable, -but you probably won't need it in most cases: - -```js -const axios = require('axios'); -var FormData = require('form-data'); - -axios.post('https://httpbin.org/post', {x: 1, buf: new Buffer(10)}, { - headers: { - 'Content-Type': 'multipart/form-data' - } -}).then(({data}) => console.log(data)); -``` - -Axios FormData serializer supports some special endings to perform the following operations: - -- `{}` - serialize the value with JSON.stringify -- `[]` - unwrap the array-like object as separate fields with the same key - -> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects - -FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases: - -- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object -to a `FormData` object by following custom rules. - -- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects; - -- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key. -The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON. - -- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects - - - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`) - - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) - - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) - -Let's say we have an object like this one: - -```js -const obj = { - x: 1, - arr: [1, 2, 3], - arr2: [1, [2], 3], - users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], - 'obj2{}': [{x:1}] -}; -``` - -The following steps will be executed by the Axios serializer internally: - -```js -const formData = new FormData(); -formData.append('x', '1'); -formData.append('arr[]', '1'); -formData.append('arr[]', '2'); -formData.append('arr[]', '3'); -formData.append('arr2[0]', '1'); -formData.append('arr2[1][0]', '2'); -formData.append('arr2[2]', '3'); -formData.append('users[0][name]', 'Peter'); -formData.append('users[0][surname]', 'Griffin'); -formData.append('users[1][name]', 'Thomas'); -formData.append('users[1][surname]', 'Anderson'); -formData.append('obj2{}', '[{"x":1}]'); -``` - -Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` -which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`. - -## Files Posting - -You can easily submit a single file: - -```js -await axios.postForm('https://httpbin.org/post', { - 'myVar' : 'foo', - 'file': document.querySelector('#fileInput').files[0] -}); -``` - -or multiple files as `multipart/form-data`: - -```js -await axios.postForm('https://httpbin.org/post', { - 'files[]': document.querySelector('#fileInput').files -}); -``` - -`FileList` object can be passed directly: - -```js -await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files) -``` - -All files will be sent with the same field names: `files[]`. - -## 🆕 HTML Form Posting (browser) - -Pass HTML Form element as a payload to submit it as `multipart/form-data` content. - -```js -await axios.postForm('https://httpbin.org/post', document.querySelector('#htmlForm')); -``` - -`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`: - -```js -await axios.post('https://httpbin.org/post', document.querySelector('#htmlForm'), { - headers: { - 'Content-Type': 'application/json' - } -}) -``` - -For example, the Form - -```html -
- - - - - - - - - -
-``` - -will be submitted as the following JSON object: - -```js -{ - "foo": "1", - "deep": { - "prop": { - "spaced": "3" - } - }, - "baz": [ - "4", - "5" - ], - "user": { - "age": "value2" - } -} -```` - -Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported. - -## 🆕 Progress capturing - -Axios supports both browser and node environments to capture request upload/download progress. - -```js -await axios.post(url, data, { - onUploadProgress: function (axiosProgressEvent) { - /*{ - loaded: number; - total?: number; - progress?: number; // in range [0..1] - bytes: number; // how many bytes have been transferred since the last trigger (delta) - estimated?: number; // estimated time in seconds - rate?: number; // upload speed in bytes - upload: true; // upload sign - }*/ - }, - - onDownloadProgress: function (axiosProgressEvent) { - /*{ - loaded: number; - total?: number; - progress?: number; - bytes: number; - estimated?: number; - rate?: number; // download speed in bytes - download: true; // download sign - }*/ - } -}); -``` - -You can also track stream upload/download progress in node.js: - -```js -const {data} = await axios.post(SERVER_URL, readableStream, { - onUploadProgress: ({progress}) => { - console.log((progress * 100).toFixed(2)); - }, - - headers: { - 'Content-Length': contentLength - }, - - maxRedirects: 0 // avoid buffering the entire stream -}); -```` - -> **Note:** -> Capturing FormData upload progress is not currently supported in node.js environments. - -> **⚠️ Warning** -> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment, -> as follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm. - - -## 🆕 Rate limiting - -Download and upload rate limits can only be set for the http adapter (node.js): - -```js -const {data} = await axios.post(LOCAL_SERVER_URL, myBuffer, { - onUploadProgress: ({progress, rate}) => { - console.log(`Upload [${(progress*100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`) - }, - - maxRate: [100 * 1024], // 100KB/s limit -}); -``` - -## 🆕 AxiosHeaders - -Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work. -Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons -and for a workaround when servers mistakenly consider the header's case. -The old approach of directly manipulating headers object is still available, but deprecated and not recommended for future usage. - -### Working with headers - -An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic. -The final headers object with string values is obtained by Axios by calling the `toJSON` method. - -> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network. - -The header value can be one of the following types: -- `string` - normal string value that will be sent to the server -- `null` - skip header when rendering to JSON -- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true` - to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`) -- `undefined` - value is not set - -> Note: The header value is considered set if it is not equal to undefined. - -The headers object is always initialized inside interceptors and transformers: - -```ts - axios.interceptors.request.use((request: InternalAxiosRequestConfig) => { - request.headers.set('My-header', 'value'); - - request.headers.set({ - "My-set-header1": "my-set-value1", - "My-set-header2": "my-set-value2" - }); - - request.headers.set('User-Agent', false); // disable subsequent setting the header by Axios - - request.headers.setContentType('text/plain'); - - request.headers['My-set-header2'] = 'newValue' // direct access is deprecated - - return request; - } - ); -```` - -You can iterate over an `AxiosHeaders` instance using a `for...of` statement: - -````js -const headers = new AxiosHeaders({ - foo: '1', - bar: '2', - baz: '3' -}); - -for(const [header, value] of headers) { - console.log(header, value); -} - -// foo 1 -// bar 2 -// baz 3 -```` - -### new AxiosHeaders(headers?) - -Constructs a new `AxiosHeaders` instance. - -``` -constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); -``` - -If the headers object is a string, it will be parsed as RAW HTTP headers. - -````js -const headers = new AxiosHeaders(` -Host: www.bing.com -User-Agent: curl/7.54.0 -Accept: */*`); - -console.log(headers); - -// Object [AxiosHeaders] { -// host: 'www.bing.com', -// 'user-agent': 'curl/7.54.0', -// accept: '*/*' -// } -```` - -### AxiosHeaders#set - -```ts -set(headerName, value: Axios, rewrite?: boolean); -set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean); -set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean); -``` - -The `rewrite` argument controls the overwriting behavior: -- `false` - do not overwrite if header's value is set (is not `undefined`) -- `undefined` (default) - overwrite the header unless its value is set to `false` -- `true` - rewrite anyway - -The option can also accept a user-defined function that determines whether the value should be overwritten or not. - -Returns `this`. - -### AxiosHeaders#get(header) - -``` - get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue; - get(headerName: string, parser: RegExp): RegExpExecArray | null; -```` - -Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`, -matcher function or internal key-value parser. - -```ts -const headers = new AxiosHeaders({ - 'Content-Type': 'multipart/form-data; boundary=Asrf456BGe4h' -}); - -console.log(headers.get('Content-Type')); -// multipart/form-data; boundary=Asrf456BGe4h - -console.log(headers.get('Content-Type', true)); // parse key-value pairs from a string separated with \s,;= delimiters: -// [Object: null prototype] { -// 'multipart/form-data': undefined, -// boundary: 'Asrf456BGe4h' -// } - - -console.log(headers.get('Content-Type', (value, name, headers) => { - return String(value).replace(/a/g, 'ZZZ'); -})); -// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h - -console.log(headers.get('Content-Type', /boundary=(\w+)/)?.[0]); -// boundary=Asrf456BGe4h - -``` - -Returns the value of the header. - -### AxiosHeaders#has(header, matcher?) - -``` -has(header: string, matcher?: AxiosHeaderMatcher): boolean; -``` - -Returns `true` if the header is set (has no `undefined` value). - -### AxiosHeaders#delete(header, matcher?) - -``` -delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; -``` - -Returns `true` if at least one header has been removed. - -### AxiosHeaders#clear(matcher?) - -``` -clear(matcher?: AxiosHeaderMatcher): boolean; -``` - -Removes all headers. -Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value. - -```ts -const headers = new AxiosHeaders({ - 'foo': '1', - 'x-foo': '2', - 'x-bar': '3', -}); - -console.log(headers.clear(/^x-/)); // true - -console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' } -``` - -Returns `true` if at least one header has been cleared. - -### AxiosHeaders#normalize(format); - -If the headers object was changed directly, it can have duplicates with the same name but in different cases. -This method normalizes the headers object by combining duplicate keys into one. -Axios uses this method internally after calling each interceptor. -Set `format` to true for converting headers name to lowercase and capitalize the initial letters (`cOntEnt-type` => `Content-Type`) - -```js -const headers = new AxiosHeaders({ - 'foo': '1', -}); - -headers.Foo = '2'; -headers.FOO = '3'; - -console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' } -console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' } -console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' } -``` - -Returns `this`. - -### AxiosHeaders#concat(...targets) - -``` -concat(...targets: Array): AxiosHeaders; -``` - -Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers. - -Returns a new `AxiosHeaders` instance. - -### AxiosHeaders#toJSON(asStrings?) - -```` -toJSON(asStrings?: boolean): RawAxiosHeaders; -```` - -Resolve all internal headers values into a new null prototype object. -Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas. - -### AxiosHeaders.from(thing?) - -```` -from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; -```` - -Returns a new `AxiosHeaders` instance created from the raw headers passed in, -or simply returns the given headers object if it's an `AxiosHeaders` instance. - -### AxiosHeaders.concat(...targets) - -```` -concat(...targets: Array): AxiosHeaders; -```` - -Returns a new `AxiosHeaders` instance created by merging the target objects. - -### Shortcuts - -The following shortcuts are available: - -- `setContentType`, `getContentType`, `hasContentType` - -- `setContentLength`, `getContentLength`, `hasContentLength` - -- `setAccept`, `getAccept`, `hasAccept` - -- `setUserAgent`, `getUserAgent`, `hasUserAgent` - -- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding` - - -## Semver - -Until axios reaches a `1.0` release, breaking changes will be released with a new minor version. For example `0.5.1`, and `0.5.4` will have the same API, but `0.6.0` will have breaking changes. - -## Promises - -axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises). -If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). - -## TypeScript - -axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors. - -```typescript -let user: User = null; -try { - const { data } = await axios.get('/user?ID=12345'); - user = data.userDetails; -} catch (error) { - if (axios.isAxiosError(error)) { - handleAxiosError(error); - } else { - handleUnexpectedError(error); - } -} -``` - -Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats. -The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater. -If use ESM, your settings should be fine. -If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`. -If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`. - -## Online one-click setup - -You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js) - - -## Resources - -* [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) -* [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) -* [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) -* [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) - -## Credits - -axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. - -## License - -[MIT](LICENSE) diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md deleted file mode 100644 index a5a2b7d..0000000 --- a/node_modules/axios/SECURITY.md +++ /dev/null @@ -1,6 +0,0 @@ -# Reporting a Vulnerability - -If you discover a security vulnerability in axios please disclose it via [our huntr page](https://huntr.dev/repos/axios/axios/). Bounty eligibility, CVE assignment, response times and past reports are all there. - - -Thank you for improving the security of axios. diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js deleted file mode 100644 index 2649e27..0000000 --- a/node_modules/axios/dist/axios.js +++ /dev/null @@ -1,3448 +0,0 @@ -// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory()); -})(this, (function () { 'use strict'; - - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, - n, - i, - u, - a = [], - f = !0, - o = !1; - try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); - } catch (r) { - o = !0, n = r; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function ownKeys(e, r) { - var t = Object.keys(e); - if (Object.getOwnPropertySymbols) { - var o = Object.getOwnPropertySymbols(e); - r && (o = o.filter(function (r) { - return Object.getOwnPropertyDescriptor(e, r).enumerable; - })), t.push.apply(t, o); - } - return t; - } - function _objectSpread2(e) { - for (var r = 1; r < arguments.length; r++) { - var t = null != arguments[r] ? arguments[r] : {}; - r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { - _defineProperty(e, r, t[r]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { - Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); - }); - } - return e; - } - function _regeneratorRuntime() { - _regeneratorRuntime = function () { - return e; - }; - var t, - e = {}, - r = Object.prototype, - n = r.hasOwnProperty, - o = Object.defineProperty || function (t, e, r) { - t[e] = r.value; - }, - i = "function" == typeof Symbol ? Symbol : {}, - a = i.iterator || "@@iterator", - c = i.asyncIterator || "@@asyncIterator", - u = i.toStringTag || "@@toStringTag"; - function define(t, e, r) { - return Object.defineProperty(t, e, { - value: r, - enumerable: !0, - configurable: !0, - writable: !0 - }), t[e]; - } - try { - define({}, ""); - } catch (t) { - define = function (t, e, r) { - return t[e] = r; - }; - } - function wrap(t, e, r, n) { - var i = e && e.prototype instanceof Generator ? e : Generator, - a = Object.create(i.prototype), - c = new Context(n || []); - return o(a, "_invoke", { - value: makeInvokeMethod(t, r, c) - }), a; - } - function tryCatch(t, e, r) { - try { - return { - type: "normal", - arg: t.call(e, r) - }; - } catch (t) { - return { - type: "throw", - arg: t - }; - } - } - e.wrap = wrap; - var h = "suspendedStart", - l = "suspendedYield", - f = "executing", - s = "completed", - y = {}; - function Generator() {} - function GeneratorFunction() {} - function GeneratorFunctionPrototype() {} - var p = {}; - define(p, a, function () { - return this; - }); - var d = Object.getPrototypeOf, - v = d && d(d(values([]))); - v && v !== r && n.call(v, a) && (p = v); - var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); - function defineIteratorMethods(t) { - ["next", "throw", "return"].forEach(function (e) { - define(t, e, function (t) { - return this._invoke(e, t); - }); - }); - } - function AsyncIterator(t, e) { - function invoke(r, o, i, a) { - var c = tryCatch(t[r], t, o); - if ("throw" !== c.type) { - var u = c.arg, - h = u.value; - return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { - invoke("next", t, i, a); - }, function (t) { - invoke("throw", t, i, a); - }) : e.resolve(h).then(function (t) { - u.value = t, i(u); - }, function (t) { - return invoke("throw", t, i, a); - }); - } - a(c.arg); - } - var r; - o(this, "_invoke", { - value: function (t, n) { - function callInvokeWithMethodAndArg() { - return new e(function (e, r) { - invoke(t, n, e, r); - }); - } - return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - } - }); - } - function makeInvokeMethod(e, r, n) { - var o = h; - return function (i, a) { - if (o === f) throw new Error("Generator is already running"); - if (o === s) { - if ("throw" === i) throw a; - return { - value: t, - done: !0 - }; - } - for (n.method = i, n.arg = a;;) { - var c = n.delegate; - if (c) { - var u = maybeInvokeDelegate(c, n); - if (u) { - if (u === y) continue; - return u; - } - } - if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { - if (o === h) throw o = s, n.arg; - n.dispatchException(n.arg); - } else "return" === n.method && n.abrupt("return", n.arg); - o = f; - var p = tryCatch(e, r, n); - if ("normal" === p.type) { - if (o = n.done ? s : l, p.arg === y) continue; - return { - value: p.arg, - done: n.done - }; - } - "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); - } - }; - } - function maybeInvokeDelegate(e, r) { - var n = r.method, - o = e.iterator[n]; - if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; - var i = tryCatch(o, e.iterator, r.arg); - if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; - var a = i.arg; - return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); - } - function pushTryEntry(t) { - var e = { - tryLoc: t[0] - }; - 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); - } - function resetTryEntry(t) { - var e = t.completion || {}; - e.type = "normal", delete e.arg, t.completion = e; - } - function Context(t) { - this.tryEntries = [{ - tryLoc: "root" - }], t.forEach(pushTryEntry, this), this.reset(!0); - } - function values(e) { - if (e || "" === e) { - var r = e[a]; - if (r) return r.call(e); - if ("function" == typeof e.next) return e; - if (!isNaN(e.length)) { - var o = -1, - i = function next() { - for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; - return next.value = t, next.done = !0, next; - }; - return i.next = i; - } - } - throw new TypeError(typeof e + " is not iterable"); - } - return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { - value: GeneratorFunctionPrototype, - configurable: !0 - }), o(GeneratorFunctionPrototype, "constructor", { - value: GeneratorFunction, - configurable: !0 - }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { - var e = "function" == typeof t && t.constructor; - return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); - }, e.mark = function (t) { - return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; - }, e.awrap = function (t) { - return { - __await: t - }; - }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { - return this; - }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { - void 0 === i && (i = Promise); - var a = new AsyncIterator(wrap(t, r, n, o), i); - return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { - return t.done ? t.value : a.next(); - }); - }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { - return this; - }), define(g, "toString", function () { - return "[object Generator]"; - }), e.keys = function (t) { - var e = Object(t), - r = []; - for (var n in e) r.push(n); - return r.reverse(), function next() { - for (; r.length;) { - var t = r.pop(); - if (t in e) return next.value = t, next.done = !1, next; - } - return next.done = !0, next; - }; - }, e.values = values, Context.prototype = { - constructor: Context, - reset: function (e) { - if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); - }, - stop: function () { - this.done = !0; - var t = this.tryEntries[0].completion; - if ("throw" === t.type) throw t.arg; - return this.rval; - }, - dispatchException: function (e) { - if (this.done) throw e; - var r = this; - function handle(n, o) { - return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; - } - for (var o = this.tryEntries.length - 1; o >= 0; --o) { - var i = this.tryEntries[o], - a = i.completion; - if ("root" === i.tryLoc) return handle("end"); - if (i.tryLoc <= this.prev) { - var c = n.call(i, "catchLoc"), - u = n.call(i, "finallyLoc"); - if (c && u) { - if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); - if (this.prev < i.finallyLoc) return handle(i.finallyLoc); - } else if (c) { - if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); - } else { - if (!u) throw new Error("try statement without catch or finally"); - if (this.prev < i.finallyLoc) return handle(i.finallyLoc); - } - } - } - }, - abrupt: function (t, e) { - for (var r = this.tryEntries.length - 1; r >= 0; --r) { - var o = this.tryEntries[r]; - if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { - var i = o; - break; - } - } - i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); - var a = i ? i.completion : {}; - return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); - }, - complete: function (t, e) { - if ("throw" === t.type) throw t.arg; - return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; - }, - finish: function (t) { - for (var e = this.tryEntries.length - 1; e >= 0; --e) { - var r = this.tryEntries[e]; - if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; - } - }, - catch: function (t) { - for (var e = this.tryEntries.length - 1; e >= 0; --e) { - var r = this.tryEntries[e]; - if (r.tryLoc === t) { - var n = r.completion; - if ("throw" === n.type) { - var o = n.arg; - resetTryEntry(r); - } - return o; - } - } - throw new Error("illegal catch attempt"); - }, - delegateYield: function (e, r, n) { - return this.delegate = { - iterator: values(e), - resultName: r, - nextLoc: n - }, "next" === this.method && (this.arg = t), y; - } - }, e; - } - function _toPrimitive(t, r) { - if ("object" != typeof t || !t) return t; - var e = t[Symbol.toPrimitive]; - if (void 0 !== e) { - var i = e.call(t, r || "default"); - if ("object" != typeof i) return i; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return ("string" === r ? String : Number)(t); - } - function _toPropertyKey(t) { - var i = _toPrimitive(t, "string"); - return "symbol" == typeof i ? i : String(i); - } - function _typeof(o) { - "@babel/helpers - typeof"; - - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { - return typeof o; - } : function (o) { - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; - }, _typeof(o); - } - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - function _asyncToGenerator(fn) { - return function () { - var self = this, - args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(undefined); - }); - }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _defineProperty(obj, key, value) { - key = _toPropertyKey(key); - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _toArray(arr) { - return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > 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."); - } - - function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; - } - - // utils is a library of generic helper functions non-specific to axios - - var toString = Object.prototype.toString; - var getPrototypeOf = Object.getPrototypeOf; - var kindOf = function (cache) { - return function (thing) { - var str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); - }; - }(Object.create(null)); - var kindOfTest = function kindOfTest(type) { - type = type.toLowerCase(); - return function (thing) { - return kindOf(thing) === type; - }; - }; - var typeOfTest = function typeOfTest(type) { - return function (thing) { - return _typeof(thing) === type; - }; - }; - - /** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ - var isArray = Array.isArray; - - /** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ - var isUndefined = typeOfTest('undefined'); - - /** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ - function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); - } - - /** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ - var isArrayBuffer = kindOfTest('ArrayBuffer'); - - /** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ - function isArrayBufferView(val) { - var result; - if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { - result = ArrayBuffer.isView(val); - } else { - result = val && val.buffer && isArrayBuffer(val.buffer); - } - return result; - } - - /** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ - var isString = typeOfTest('string'); - - /** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ - var isFunction = typeOfTest('function'); - - /** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ - var isNumber = typeOfTest('number'); - - /** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ - var isObject = function isObject(thing) { - return thing !== null && _typeof(thing) === 'object'; - }; - - /** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ - var isBoolean = function isBoolean(thing) { - return thing === true || thing === false; - }; - - /** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ - var isPlainObject = function isPlainObject(val) { - if (kindOf(val) !== 'object') { - return false; - } - var prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); - }; - - /** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ - var isDate = kindOfTest('Date'); - - /** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFile = kindOfTest('File'); - - /** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ - var isBlob = kindOfTest('Blob'); - - /** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFileList = kindOfTest('FileList'); - - /** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ - var isStream = function isStream(val) { - return isObject(val) && isFunction(val.pipe); - }; - - /** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ - var isFormData = function isFormData(thing) { - var kind; - return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')); - }; - - /** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ - var isURLSearchParams = kindOfTest('URLSearchParams'); - - /** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ - var trim = function trim(str) { - return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - }; - - /** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ - function forEach(obj, fn) { - var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - _ref$allOwnKeys = _ref.allOwnKeys, - allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys; - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - var i; - var l; - - // Force an array if not already something iterable - if (_typeof(obj) !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } - } - function findKey(obj, key) { - key = key.toLowerCase(); - var keys = Object.keys(obj); - var i = keys.length; - var _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; - } - var _global = function () { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : typeof window !== 'undefined' ? window : global; - }(); - var isContextDefined = function isContextDefined(context) { - return !isUndefined(context) && context !== _global; - }; - - /** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ - function merge( /* obj1, obj2, obj3, ... */ - ) { - var _ref2 = isContextDefined(this) && this || {}, - caseless = _ref2.caseless; - var result = {}; - var assignValue = function assignValue(val, key) { - var targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - for (var i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; - } - - /** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ - var extend = function extend(a, b, thisArg) { - var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, - allOwnKeys = _ref3.allOwnKeys; - forEach(b, function (val, key) { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, { - allOwnKeys: allOwnKeys - }); - return a; - }; - - /** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ - var stripBOM = function stripBOM(content) { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; - }; - - /** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ - var inherits = function inherits(constructor, superConstructor, props, descriptors) { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); - }; - - /** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ - var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) { - var props; - var i; - var prop; - var merged = {}; - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - return destObj; - }; - - /** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ - var endsWith = function endsWith(str, searchString, position) { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - var lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - - /** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ - var toArray = function toArray(thing) { - if (!thing) return null; - if (isArray(thing)) return thing; - var i = thing.length; - if (!isNumber(i)) return null; - var arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; - }; - - /** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ - // eslint-disable-next-line func-names - var isTypedArray = function (TypedArray) { - // eslint-disable-next-line func-names - return function (thing) { - return TypedArray && thing instanceof TypedArray; - }; - }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - - /** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ - var forEachEntry = function forEachEntry(obj, fn) { - var generator = obj && obj[Symbol.iterator]; - var iterator = generator.call(obj); - var result; - while ((result = iterator.next()) && !result.done) { - var pair = result.value; - fn.call(obj, pair[0], pair[1]); - } - }; - - /** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ - var matchAll = function matchAll(regExp, str) { - var matches; - var arr = []; - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - return arr; - }; - - /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ - var isHTMLForm = kindOfTest('HTMLFormElement'); - var toCamelCase = function toCamelCase(str) { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); - }; - - /* Creating a function that will check if an object has a property. */ - var hasOwnProperty = function (_ref4) { - var hasOwnProperty = _ref4.hasOwnProperty; - return function (obj, prop) { - return hasOwnProperty.call(obj, prop); - }; - }(Object.prototype); - - /** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ - var isRegExp = kindOfTest('RegExp'); - var reduceDescriptors = function reduceDescriptors(obj, reducer) { - var descriptors = Object.getOwnPropertyDescriptors(obj); - var reducedDescriptors = {}; - forEach(descriptors, function (descriptor, name) { - var ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - Object.defineProperties(obj, reducedDescriptors); - }; - - /** - * Makes all methods read-only - * @param {Object} obj - */ - - var freezeMethods = function freezeMethods(obj) { - reduceDescriptors(obj, function (descriptor, name) { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - var value = obj[name]; - if (!isFunction(value)) return; - descriptor.enumerable = false; - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - if (!descriptor.set) { - descriptor.set = function () { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); - }; - var toObjectSet = function toObjectSet(arrayOrString, delimiter) { - var obj = {}; - var define = function define(arr) { - arr.forEach(function (value) { - obj[value] = true; - }); - }; - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - return obj; - }; - var noop = function noop() {}; - var toFiniteNumber = function toFiniteNumber(value, defaultValue) { - value = +value; - return Number.isFinite(value) ? value : defaultValue; - }; - var ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - var DIGIT = '0123456789'; - var ALPHABET = { - DIGIT: DIGIT, - ALPHA: ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT - }; - var generateString = function generateString() { - var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT; - var str = ''; - var length = alphabet.length; - while (size--) { - str += alphabet[Math.random() * length | 0]; - } - return str; - }; - - /** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ - function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); - } - var toJSONObject = function toJSONObject(obj) { - var stack = new Array(10); - var visit = function visit(source, i) { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - if (!('toJSON' in source)) { - stack[i] = source; - var target = isArray(source) ? [] : {}; - forEach(source, function (value, key) { - var reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - stack[i] = undefined; - return target; - } - } - return source; - }; - return visit(obj, 0); - }; - var isAsyncFn = kindOfTest('AsyncFunction'); - var isThenable = function isThenable(thing) { - return thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing["catch"]); - }; - var utils$1 = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isBoolean: isBoolean, - isObject: isObject, - isPlainObject: isPlainObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isRegExp: isRegExp, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isTypedArray: isTypedArray, - isFileList: isFileList, - forEach: forEach, - merge: merge, - extend: extend, - trim: trim, - stripBOM: stripBOM, - inherits: inherits, - toFlatObject: toFlatObject, - kindOf: kindOf, - kindOfTest: kindOfTest, - endsWith: endsWith, - toArray: toArray, - forEachEntry: forEachEntry, - matchAll: matchAll, - isHTMLForm: isHTMLForm, - hasOwnProperty: hasOwnProperty, - hasOwnProp: hasOwnProperty, - // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors: reduceDescriptors, - freezeMethods: freezeMethods, - toObjectSet: toObjectSet, - toCamelCase: toCamelCase, - noop: noop, - toFiniteNumber: toFiniteNumber, - findKey: findKey, - global: _global, - isContextDefined: isContextDefined, - ALPHABET: ALPHABET, - generateString: generateString, - isSpecCompliantForm: isSpecCompliantForm, - toJSONObject: toJSONObject, - isAsyncFn: isAsyncFn, - isThenable: isThenable - }; - - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - function AxiosError(message, code, config, request, response) { - Error.call(this); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = new Error().stack; - } - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); - } - utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } - }); - var prototype$1 = AxiosError.prototype; - var descriptors = {}; - ['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL' - // eslint-disable-next-line func-names - ].forEach(function (code) { - descriptors[code] = { - value: code - }; - }); - Object.defineProperties(AxiosError, descriptors); - Object.defineProperty(prototype$1, 'isAxiosError', { - value: true - }); - - // eslint-disable-next-line func-names - AxiosError.from = function (error, code, config, request, response, customProps) { - var axiosError = Object.create(prototype$1); - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, function (prop) { - return prop !== 'isAxiosError'; - }); - AxiosError.call(axiosError, error.message, code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; - }; - - // eslint-disable-next-line strict - var httpAdapter = null; - - /** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ - function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); - } - - /** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ - function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; - } - - /** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ - function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); - } - - /** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ - function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); - } - var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); - }); - - /** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - - /** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ - function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - var metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - var visitor = options.visitor || defaultVisitor; - var dots = options.dots; - var indexes = options.indexes; - var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - var useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - function convertValue(value) { - if (value === null) return ''; - if (utils$1.isDate(value)) { - return value.toISOString(); - } - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - var arr = value; - if (value && !path && _typeof(value) === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); - }); - return false; - } - } - if (isVisitable(value)) { - return true; - } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - var stack = []; - var exposedHelpers = Object.assign(predicates, { - defaultVisitor: defaultVisitor, - convertValue: convertValue, - isVisitable: isVisitable - }); - function build(value, path) { - if (utils$1.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - stack.push(value); - utils$1.forEach(value, function each(el, key) { - var result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - stack.pop(); - } - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - build(obj); - return formData; - } - - /** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ - function encode$1(str) { - var charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); - } - - /** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ - function AxiosURLSearchParams(params, options) { - this._pairs = []; - params && toFormData(params, this, options); - } - var prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { - this._pairs.push([name, value]); - }; - prototype.toString = function toString(encoder) { - var _encode = encoder ? function (value) { - return encoder.call(this, value, encode$1); - } : encode$1; - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); - }; - - /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ - function encode(val) { - return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - } - - /** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ - function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - var _encode = options && options.encode || encode; - var serializeFn = options && options.serialize; - var serializedParams; - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); - } - if (serializedParams) { - var hashmarkIndex = url.indexOf("#"); - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - return url; - } - - var InterceptorManager = /*#__PURE__*/function () { - function InterceptorManager() { - _classCallCheck(this, InterceptorManager); - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - _createClass(InterceptorManager, [{ - key: "use", - value: function use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - }, { - key: "eject", - value: function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - }, { - key: "clear", - value: function clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - }, { - key: "forEach", - value: function forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } - }]); - return InterceptorManager; - }(); - var InterceptorManager$1 = InterceptorManager; - - var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false - }; - - var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - - var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - - var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - - var platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] - }; - - var hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - - /** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ - var hasStandardBrowserEnv = function (product) { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0; - }(typeof navigator !== 'undefined' && navigator.product); - - /** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ - var hasStandardBrowserWebWorkerEnv = function () { - return typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; - }(); - - var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv - }); - - var platform = _objectSpread2(_objectSpread2({}, utils), platform$1); - - function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function visitor(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); - } - - /** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ - function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); - } - - /** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ - function arrayToObject(arr) { - var obj = {}; - var keys = Object.keys(arr); - var i; - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; - } - - /** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ - function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - var name = path[index++]; - if (name === '__proto__') return true; - var isNumericKey = Number.isFinite(+name); - var isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - return !isNumericKey; - } - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - var result = buildPath(path, value, target[name], index); - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - return !isNumericKey; - } - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - var obj = {}; - utils$1.forEachEntry(formData, function (name, value) { - buildPath(parsePropPath(name), value, obj, 0); - }); - return obj; - } - return null; - } - - /** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ - function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - return (encoder || JSON.stringify)(rawValue); - } - var defaults = { - transitional: transitionalDefaults, - adapter: ['xhr', 'http'], - transformRequest: [function transformRequest(data, headers) { - var contentType = headers.getContentType() || ''; - var hasJSONContentType = contentType.indexOf('application/json') > -1; - var isObjectPayload = utils$1.isObject(data); - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - var isFormData = utils$1.isFormData(data); - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - var isFileList; - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - var _FormData = this.env && this.env.FormData; - return toFormData(isFileList ? { - 'files[]': data - } : data, _FormData && new _FormData(), this.formSerializer); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - return data; - }], - transformResponse: [function transformResponse(data) { - var transitional = this.transitional || defaults.transitional; - var forcedJSONParsing = transitional && transitional.forcedJSONParsing; - var JSONRequested = this.responseType === 'json'; - if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { - var silentJSONParsing = transitional && transitional.silentJSONParsing; - var strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - return data; - }], - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - maxContentLength: -1, - maxBodyLength: -1, - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } - }; - utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], function (method) { - defaults.headers[method] = {}; - }); - var defaults$1 = defaults; - - // RawAxiosHeaders whose duplicates are ignored by node - // c.f. https://nodejs.org/api/http.html#http_message_headers - var ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); - - /** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ - var parseHeaders = (function (rawHeaders) { - var parsed = {}; - var key; - var val; - var i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - if (!key || parsed[key] && ignoreDuplicateOf[key]) { - return; - } - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - return parsed; - }); - - var $internals = Symbol('internals'); - function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); - } - function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); - } - function parseTokens(str) { - var tokens = Object.create(null); - var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - var match; - while (match = tokensRE.exec(str)) { - tokens[match[1]] = match[2]; - } - return tokens; - } - var isValidHeaderName = function isValidHeaderName(str) { - return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - }; - function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - if (isHeaderNameFilter) { - value = header; - } - if (!utils$1.isString(value)) return; - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } - } - function formatHeader(header) { - return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) { - return _char.toUpperCase() + str; - }); - } - function buildAccessors(obj, header) { - var accessorName = utils$1.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(function (methodName) { - Object.defineProperty(obj, methodName + accessorName, { - value: function value(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); - } - var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) { - function AxiosHeaders(headers) { - _classCallCheck(this, AxiosHeaders); - headers && this.set(headers); - } - _createClass(AxiosHeaders, [{ - key: "set", - value: function set(header, valueOrRewrite, rewrite) { - var self = this; - function setHeader(_value, _header, _rewrite) { - var lHeader = normalizeHeader(_header); - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - var key = utils$1.findKey(self, lHeader); - if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { - self[key || _header] = normalizeValue(_value); - } - } - var setHeaders = function setHeaders(headers, _rewrite) { - return utils$1.forEach(headers, function (_value, _header) { - return setHeader(_value, _header, _rewrite); - }); - }; - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - return this; - } - }, { - key: "get", - value: function get(header, parser) { - header = normalizeHeader(header); - if (header) { - var key = utils$1.findKey(this, header); - if (key) { - var value = this[key]; - if (!parser) { - return value; - } - if (parser === true) { - return parseTokens(value); - } - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - }, { - key: "has", - value: function has(header, matcher) { - header = normalizeHeader(header); - if (header) { - var key = utils$1.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - return false; - } - }, { - key: "delete", - value: function _delete(header, matcher) { - var self = this; - var deleted = false; - function deleteHeader(_header) { - _header = normalizeHeader(_header); - if (_header) { - var key = utils$1.findKey(self, _header); - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - deleted = true; - } - } - } - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - return deleted; - } - }, { - key: "clear", - value: function clear(matcher) { - var keys = Object.keys(this); - var i = keys.length; - var deleted = false; - while (i--) { - var key = keys[i]; - if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - return deleted; - } - }, { - key: "normalize", - value: function normalize(format) { - var self = this; - var headers = {}; - utils$1.forEach(this, function (value, header) { - var key = utils$1.findKey(headers, header); - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - var normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { - delete self[header]; - } - self[normalized] = normalizeValue(value); - headers[normalized] = true; - }); - return this; - } - }, { - key: "concat", - value: function concat() { - var _this$constructor; - for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) { - targets[_key] = arguments[_key]; - } - return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets)); - } - }, { - key: "toJSON", - value: function toJSON(asStrings) { - var obj = Object.create(null); - utils$1.forEach(this, function (value, header) { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - return obj; - } - }, { - key: _Symbol$iterator, - value: function value() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - }, { - key: "toString", - value: function toString() { - return Object.entries(this.toJSON()).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - header = _ref2[0], - value = _ref2[1]; - return header + ': ' + value; - }).join('\n'); - } - }, { - key: _Symbol$toStringTag, - get: function get() { - return 'AxiosHeaders'; - } - }], [{ - key: "from", - value: function from(thing) { - return thing instanceof this ? thing : new this(thing); - } - }, { - key: "concat", - value: function concat(first) { - var computed = new this(first); - for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - targets[_key2 - 1] = arguments[_key2]; - } - targets.forEach(function (target) { - return computed.set(target); - }); - return computed; - } - }, { - key: "accessor", - value: function accessor(header) { - var internals = this[$internals] = this[$internals] = { - accessors: {} - }; - var accessors = internals.accessors; - var prototype = this.prototype; - function defineAccessor(_header) { - var lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; - } - }]); - return AxiosHeaders; - }(Symbol.iterator, Symbol.toStringTag); - AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - - // reserved names hotfix - utils$1.reduceDescriptors(AxiosHeaders.prototype, function (_ref3, key) { - var value = _ref3.value; - var mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: function get() { - return value; - }, - set: function set(headerValue) { - this[mapped] = headerValue; - } - }; - }); - utils$1.freezeMethods(AxiosHeaders); - var AxiosHeaders$1 = AxiosHeaders; - - /** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ - function transformData(fns, response) { - var config = this || defaults$1; - var context = response || config; - var headers = AxiosHeaders$1.from(context.headers); - var data = context.data; - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - headers.normalize(); - return data; - } - - function isCancel(value) { - return !!(value && value.__CANCEL__); - } - - /** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ - function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - } - utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true - }); - - /** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ - function settle(resolve, reject, response) { - var validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); - } - } - - var cookies = platform.hasStandardBrowserEnv ? - // Standard browser envs support document.cookie - { - write: function write(name, value, expires, path, domain, secure) { - var cookie = [name + '=' + encodeURIComponent(value)]; - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - utils$1.isString(path) && cookie.push('path=' + path); - utils$1.isString(domain) && cookie.push('domain=' + domain); - secure === true && cookie.push('secure'); - document.cookie = cookie.join('; '); - }, - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return match ? decodeURIComponent(match[3]) : null; - }, - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } : - // Non-standard browser env (web workers, react-native) lack needed support. - { - write: function write() {}, - read: function read() { - return null; - }, - remove: function remove() {} - }; - - /** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ - function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); - } - - /** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ - function combineURLs(baseURL, relativeURL) { - return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; - } - - /** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ - function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; - } - - var isURLSameOrigin = platform.hasStandardBrowserEnv ? - // Standard browser envs have full support of the APIs needed to test - // whether the request URL is of the same origin as current location. - function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - var href = url; - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname - }; - } - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - var parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL; - return parsed.protocol === originURL.protocol && parsed.host === originURL.host; - }; - }() : - // Non standard browser envs (web workers, react-native) lack needed support. - function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - }(); - - function parseProtocol(url) { - var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; - } - - /** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ - function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - var bytes = new Array(samplesCount); - var timestamps = new Array(samplesCount); - var head = 0; - var tail = 0; - var firstSampleTS; - min = min !== undefined ? min : 1000; - return function push(chunkLength) { - var now = Date.now(); - var startedAt = timestamps[tail]; - if (!firstSampleTS) { - firstSampleTS = now; - } - bytes[head] = chunkLength; - timestamps[head] = now; - var i = tail; - var bytesCount = 0; - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - head = (head + 1) % samplesCount; - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - if (now - firstSampleTS < min) { - return; - } - var passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; - } - - function progressEventReducer(listener, isDownloadStream) { - var bytesNotified = 0; - var _speedometer = speedometer(50, 250); - return function (e) { - var loaded = e.loaded; - var total = e.lengthComputable ? e.total : undefined; - var progressBytes = loaded - bytesNotified; - var rate = _speedometer(progressBytes); - var inRange = loaded <= total; - bytesNotified = loaded; - var data = { - loaded: loaded, - total: total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - data[isDownloadStream ? 'download' : 'upload'] = true; - listener(data); - }; - } - var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var requestData = config.data; - var requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - var responseType = config.responseType, - withXSRFToken = config.withXSRFToken; - var onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - var contentType; - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - var _ref = contentType ? contentType.split(';').map(function (token) { - return token.trim(); - }).filter(Boolean) : [], - _ref2 = _toArray(_ref), - type = _ref2[0], - tokens = _ref2.slice(1); - requestHeaders.setContentType([type || 'multipart/form-data'].concat(_toConsumableArray(tokens)).join('; ')); - } - } - var request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - var fullPath = buildFullPath(config.baseURL, config.url); - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - function onloadend() { - if (!request) { - return; - } - // Prepare the response - var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); - var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; - var response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - var transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) { - // Add xsrf header - var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = function onCanceled(cancel) { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - var protocol = parseProtocol(fullPath); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - // Send the request - request.send(requestData || null); - }); - }; - - var knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter - }; - utils$1.forEach(knownAdapters, function (fn, value) { - if (fn) { - try { - Object.defineProperty(fn, 'name', { - value: value - }); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', { - value: value - }); - } - }); - var renderReason = function renderReason(reason) { - return "- ".concat(reason); - }; - var isResolvedHandle = function isResolvedHandle(adapter) { - return utils$1.isFunction(adapter) || adapter === null || adapter === false; - }; - var adapters = { - getAdapter: function getAdapter(adapters) { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - var _adapters = adapters, - length = _adapters.length; - var nameOrAdapter; - var adapter; - var rejectedReasons = {}; - for (var i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - var id = void 0; - adapter = nameOrAdapter; - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - if (adapter === undefined) { - throw new AxiosError("Unknown adapter '".concat(id, "'")); - } - } - if (adapter) { - break; - } - rejectedReasons[id || '#' + i] = adapter; - } - if (!adapter) { - var reasons = Object.entries(rejectedReasons).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - id = _ref2[0], - state = _ref2[1]; - return "adapter ".concat(id, " ") + (state === false ? 'is not supported by the environment' : 'is not available in the build'); - }); - var s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; - throw new AxiosError("There is no suitable adapter to dispatch the request " + s, 'ERR_NOT_SUPPORT'); - } - return adapter; - }, - adapters: knownAdapters - }; - - /** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ - function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } - } - - /** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ - function dispatchRequest(config) { - throwIfCancellationRequested(config); - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call(config, config.transformRequest); - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call(config, config.transformResponse, response); - response.headers = AxiosHeaders$1.from(response.headers); - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call(config, config.transformResponse, reason.response); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - return Promise.reject(reason); - }); - } - - var headersToObject = function headersToObject(thing) { - return thing instanceof AxiosHeaders$1 ? _objectSpread2({}, thing) : thing; - }; - - /** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ - function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - var config = {}; - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({ - caseless: caseless - }, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - var mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: function headers(a, b) { - return mergeDeepProperties(headersToObject(a), headersToObject(b), true); - } - }; - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - var merge = mergeMap[prop] || mergeDeepProperties; - var configValue = merge(config1[prop], config2[prop], prop); - utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; - } - - var VERSION = "1.6.8"; - - var validators$1 = {}; - - // eslint-disable-next-line func-names - ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) { - validators$1[type] = function validator(thing) { - return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; - }); - var deprecatedWarnings = {}; - - /** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ - validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return function (value, opt, opts) { - if (validator === false) { - throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); - } - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); - } - return validator ? validator(value, opt, opts) : true; - }; - }; - - /** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - - function assertOptions(options, schema, allowUnknown) { - if (_typeof(options) !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - var keys = Object.keys(options); - var i = keys.length; - while (i-- > 0) { - var opt = keys[i]; - var validator = schema[opt]; - if (validator) { - var value = options[opt]; - var result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } - } - var validator = { - assertOptions: assertOptions, - validators: validators$1 - }; - - var validators = validator.validators; - - /** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ - var Axios = /*#__PURE__*/function () { - function Axios(instanceConfig) { - _classCallCheck(this, Axios); - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - _createClass(Axios, [{ - key: "request", - value: (function () { - var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(configOrUrl, config) { - var dummy, stack; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - _context.prev = 0; - _context.next = 3; - return this._request(configOrUrl, config); - case 3: - return _context.abrupt("return", _context.sent); - case 6: - _context.prev = 6; - _context.t0 = _context["catch"](0); - if (_context.t0 instanceof Error) { - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error(); - - // slice off the Error: ... line - stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - if (!_context.t0.stack) { - _context.t0.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(_context.t0.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - _context.t0.stack += '\n' + stack; - } - } - throw _context.t0; - case 10: - case "end": - return _context.stop(); - } - }, _callee, this, [[0, 6]]); - })); - function request(_x, _x2) { - return _request2.apply(this, arguments); - } - return request; - }()) - }, { - key: "_request", - value: function _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - config = mergeConfig(this.defaults, config); - var _config = config, - transitional = _config.transitional, - paramsSerializer = _config.paramsSerializer, - headers = _config.headers; - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators["boolean"]), - forcedJSONParsing: validators.transitional(validators["boolean"]), - clarifyTimeoutError: validators.transitional(validators["boolean"]) - }, false); - } - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators["function"], - serialize: validators["function"] - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - var contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); - headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) { - delete headers[method]; - }); - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - var requestInterceptorChain = []; - var synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - var responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - var promise; - var i = 0; - var len; - if (!synchronousRequestInterceptors) { - var chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - promise = Promise.resolve(config); - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - return promise; - } - len = requestInterceptorChain.length; - var newConfig = config; - i = 0; - while (i < len) { - var onFulfilled = requestInterceptorChain[i++]; - var onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - i = 0; - len = responseInterceptorChain.length; - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - return promise; - } - }, { - key: "getUri", - value: function getUri(config) { - config = mergeConfig(this.defaults, config); - var fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } - }]); - return Axios; - }(); // Provide aliases for supported request methods - utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function (url, config) { - return this.request(mergeConfig(config || {}, { - method: method, - url: url, - data: (config || {}).data - })); - }; - }); - utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method: method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url: url, - data: data - })); - }; - } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); - }); - var Axios$1 = Axios; - - /** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ - var CancelToken = /*#__PURE__*/function () { - function CancelToken(executor) { - _classCallCheck(this, CancelToken); - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - var resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - var token = this; - - // eslint-disable-next-line func-names - this.promise.then(function (cancel) { - if (!token._listeners) return; - var i = token._listeners.length; - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = function (onfulfilled) { - var _resolve; - // eslint-disable-next-line func-names - var promise = new Promise(function (resolve) { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - return promise; - }; - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - _createClass(CancelToken, [{ - key: "throwIfRequested", - value: function throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - }, { - key: "subscribe", - value: function subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - }, { - key: "unsubscribe", - value: function unsubscribe(listener) { - if (!this._listeners) { - return; - } - var index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - }], [{ - key: "source", - value: function source() { - var cancel; - var token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token: token, - cancel: cancel - }; - } - }]); - return CancelToken; - }(); - var CancelToken$1 = CancelToken; - - /** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ - function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; - } - - /** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ - function isAxiosError(payload) { - return utils$1.isObject(payload) && payload.isAxiosError === true; - } - - var HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511 - }; - Object.entries(HttpStatusCode).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - HttpStatusCode[value] = key; - }); - var HttpStatusCode$1 = HttpStatusCode; - - /** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ - function createInstance(defaultConfig) { - var context = new Axios$1(defaultConfig); - var instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, { - allOwnKeys: true - }); - - // Copy context to instance - utils$1.extend(instance, context, null, { - allOwnKeys: true - }); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - return instance; - } - - // Create the default instance to be exported - var axios = createInstance(defaults$1); - - // Expose Axios class to allow class inheritance - axios.Axios = Axios$1; - - // Expose Cancel & CancelToken - axios.CanceledError = CanceledError; - axios.CancelToken = CancelToken$1; - axios.isCancel = isCancel; - axios.VERSION = VERSION; - axios.toFormData = toFormData; - - // Expose AxiosError class - axios.AxiosError = AxiosError; - - // alias for CanceledError for backward compatibility - axios.Cancel = axios.CanceledError; - - // Expose all/spread - axios.all = function all(promises) { - return Promise.all(promises); - }; - axios.spread = spread; - - // Expose isAxiosError - axios.isAxiosError = isAxiosError; - - // Expose mergeConfig - axios.mergeConfig = mergeConfig; - axios.AxiosHeaders = AxiosHeaders$1; - axios.formToJSON = function (thing) { - return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - }; - axios.getAdapter = adapters.getAdapter; - axios.HttpStatusCode = HttpStatusCode$1; - axios["default"] = axios; - - return axios; - -})); -//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map deleted file mode 100644 index d8022a2..0000000 --- a/node_modules/axios/dist/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/adapters/xhr.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","kind","FormData","append","isURLSearchParams","trim","replace","forEach","obj","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","i","l","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","merge","_ref2","caseless","assignValue","targetKey","extend","a","b","_ref3","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","_ref4","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","hasOwnProp","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","each","token","join","isFlatArray","some","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","InterceptorManager","_classCallCheck","handlers","_createClass","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","_objectSpread","platform","toURLEncodedForm","data","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","parse","e","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","configurable","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","get","has","matcher","_delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","_slicedToArray","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","standardBrowserEnv","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","isURLSameOrigin","requestURL","nonStandardBrowserEnv","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","progress","estimated","event","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","requestData","requestHeaders","withXSRFToken","onCanceled","cancelToken","unsubscribe","signal","removeEventListener","Boolean","_toArray","_toConsumableArray","auth","username","password","unescape","btoa","fullPath","open","paramsSerializer","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","err","onreadystatechange","handleLoad","readyState","responseURL","setTimeout","onabort","handleAbort","ECONNABORTED","onerror","handleError","ERR_NETWORK","ontimeout","handleTimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","knownAdapters","http","httpAdapter","xhr","xhrAdapter","renderReason","reason","isResolvedHandle","getAdapter","adapters","_adapters","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","computeConfigValue","configValue","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","_callee$","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","newConfig","onFulfilled","onRejected","getUri","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","isAxiosError","payload","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/axios.min.js b/node_modules/axios/dist/axios.min.js deleted file mode 100644 index 06a84e7..0000000 --- a/node_modules/axios/dist/axios.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(t){for(var r=1;r=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:k(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function n(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function i(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=e)if("object"!==o(e)&&(e=[e]),j(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,q=function(e){return!R(e)&&e!==I};var z,M=(z="undefined"!=typeof Uint8Array&&w(Uint8Array),function(e){return z&&e instanceof z}),H=O("HTMLFormElement"),J=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),G=O("RegExp"),W=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};D(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},K="abcdefghijklmnopqrstuvwxyz",V="0123456789",X={DIGIT:V,ALPHA:K,ALPHA_DIGIT:K+K.toUpperCase()+V};var $=O("AsyncFunction"),Q={isArray:j,isArrayBuffer:A,isBuffer:function(e){return null!==e&&!R(e)&&null!==e.constructor&&!R(e.constructor)&&x(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||x(e.append)&&("formdata"===(t=E(e))||"object"===t&&x(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&A(e.buffer)},isString:T,isNumber:P,isBoolean:function(e){return!0===e||!1===e},isObject:N,isPlainObject:k,isUndefined:R,isDate:_,isFile:L,isBlob:C,isRegExp:G,isFunction:x,isStream:function(e){return N(e)&&x(e.pipe)},isURLSearchParams:U,isTypedArray:M,isFileList:F,forEach:D,merge:function e(){for(var t=q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&B(n,o)||o;k(n[i])&&k(t)?n[i]=e(n[i],t):k(t)?n[i]=e({},t):j(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return D(t,(function(t,n){r&&x(t)?e[n]=m(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&w(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:E,kindOfTest:O,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(j(e))return e;var t=e.length;if(!P(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:H,hasOwnProperty:J,hasOwnProp:J,reduceDescriptors:W,freezeMethods:function(e){W(e,(function(t,r){if(x(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];x(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return j(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:B,global:I,isContextDefined:q,ALPHABET:X,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:X.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&x(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(N(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=j(r)?[]:{};return D(r,(function(t,r){var i=e(t,n+1);!R(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:$,isThenable:function(e){return e&&(N(e)||x(e))&&x(e.then)&&x(e.catch)}};function Y(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}Q.inherits(Y,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Q.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Z=Y.prototype,ee={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ee[e]={value:e}})),Object.defineProperties(Y,ee),Object.defineProperty(Z,"isAxiosError",{value:!0}),Y.from=function(e,t,r,n,o,i){var a=Object.create(Z);return Q.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),Y.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function te(e){return Q.isPlainObject(e)||Q.isArray(e)}function re(e){return Q.endsWith(e,"[]")?e.slice(0,-2):e}function ne(e,t,r){return e?e.concat(t).map((function(e,t){return e=re(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var oe=Q.toFlatObject(Q,{},null,(function(e){return/^is[A-Z]/.test(e)}));function ie(e,t,r){if(!Q.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=Q.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Q.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&Q.isSpecCompliantForm(t);if(!Q.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Q.isDate(e))return e.toISOString();if(!u&&Q.isBlob(e))throw new Y("Blob is not supported. Use a Buffer instead.");return Q.isArrayBuffer(e)||Q.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(e,r,i){var u=e;if(e&&!i&&"object"===o(e))if(Q.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(Q.isArray(e)&&function(e){return Q.isArray(e)&&!e.some(te)}(e)||(Q.isFileList(e)||Q.endsWith(r,"[]"))&&(u=Q.toArray(e)))return r=re(r),u.forEach((function(e,n){!Q.isUndefined(e)&&null!==e&&t.append(!0===s?ne([r],n,a):null===s?r:r+"[]",c(e))})),!1;return!!te(e)||(t.append(ne(i,r,a),c(e)),!1)}var l=[],h=Object.assign(oe,{defaultVisitor:f,convertValue:c,isVisitable:te});if(!Q.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!Q.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),Q.forEach(r,(function(r,o){!0===(!(Q.isUndefined(r)||null===r)&&i.call(t,r,Q.isString(o)?o.trim():o,n,h))&&e(r,n?n.concat(o):[o])})),l.pop()}}(e),t}function ae(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&ie(e,this,t)}var ue=se.prototype;function ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function fe(e,t,r){if(!t)return e;var n,o=r&&r.encode||ce,i=r&&r.serialize;if(n=i?i(t,r):Q.isURLSearchParams(t)?t.toString():new se(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}ue.append=function(e,t){this._pairs.push([e,t])},ue.toString=function(e){var t=e?function(t){return e.call(this,t,ae)}:ae;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var le,he=function(){function e(){a(this,e),this.handlers=[]}return u(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){Q.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),pe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},de={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:se,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ye="undefined"!=typeof window&&"undefined"!=typeof document,ve=(le="undefined"!=typeof navigator&&navigator.product,ye&&["ReactNative","NativeScript","NS"].indexOf(le)<0),me="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ge=t(t({},Object.freeze({__proto__:null,hasBrowserEnv:ye,hasStandardBrowserWebWorkerEnv:me,hasStandardBrowserEnv:ve})),de);function be(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&Q.isArray(n)?n.length:i,s?(Q.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&Q.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&Q.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Q.isObject(e);if(i&&Q.isHTMLForm(e)&&(e=new FormData(e)),Q.isFormData(e))return o?JSON.stringify(be(e)):e;if(Q.isArrayBuffer(e)||Q.isBuffer(e)||Q.isStream(e)||Q.isFile(e)||Q.isBlob(e))return e;if(Q.isArrayBufferView(e))return e.buffer;if(Q.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ie(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return ge.isNode&&Q.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=Q.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return ie(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(Q.isString(e))try{return(t||JSON.parse)(e),Q.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||we.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&Q.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw Y.from(e,Y.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Q.forEach(["delete","get","head","post","put","patch"],(function(e){we.headers[e]={}}));var Ee=we,Oe=Q.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Se=Symbol("internals");function je(e){return e&&String(e).trim().toLowerCase()}function Re(e){return!1===e||null==e?e:Q.isArray(e)?e.map(Re):String(e)}function Ae(e,t,r,n,o){return Q.isFunction(n)?n.call(this,t,r):(o&&(t=r),Q.isString(t)?Q.isString(n)?-1!==t.indexOf(n):Q.isRegExp(n)?n.test(t):void 0:void 0)}var Te=function(e,t){function r(e){a(this,r),e&&this.set(e)}return u(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=je(t);if(!o)throw new Error("header name must be a non-empty string");var i=Q.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Re(e))}var i,a,s,u,c,f=function(e,t){return Q.forEach(e,(function(e,r){return o(e,r,t)}))};return Q.isPlainObject(e)||e instanceof this.constructor?f(e,t):Q.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&Oe[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,r),this}},{key:"get",value:function(e,t){if(e=je(e)){var r=Q.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(Q.isFunction(t))return t.call(this,n,r);if(Q.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=je(e)){var r=Q.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ae(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=je(e)){var o=Q.findKey(r,e);!o||t&&!Ae(0,r[o],o,t)||(delete r[o],n=!0)}}return Q.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ae(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return Q.forEach(this,(function(n,o){var i=Q.findKey(r,o);if(i)return t[i]=Re(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Re(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1?"since :\n"+s.map(De).join("\n"):" "+De(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function qe(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ke(null,e)}function ze(e){return qe(e),e.headers=xe.from(e.headers),e.data=Pe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ie(e.adapter||Ee.adapter)(e).then((function(t){return qe(e),t.data=Pe.call(e,e.transformResponse,t),t.headers=xe.from(t.headers),t}),(function(t){return Ne(t)||(qe(e),t&&t.response&&(t.response.data=Pe.call(e,e.transformResponse,t.response),t.response.headers=xe.from(t.response.headers))),Promise.reject(t)}))}var Me=function(e){return e instanceof xe?t({},e):e};function He(e,t){t=t||{};var r={};function n(e,t,r){return Q.isPlainObject(e)&&Q.isPlainObject(t)?Q.merge.call({caseless:r},e,t):Q.isPlainObject(t)?Q.merge({},t):Q.isArray(t)?t.slice():t}function o(e,t,r){return Q.isUndefined(t)?Q.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!Q.isUndefined(t))return n(void 0,t)}function a(e,t){return Q.isUndefined(t)?Q.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(Me(e),Me(t),!0)}};return Q.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);Q.isUndefined(a)&&i!==s||(r[n]=a)})),r}var Je="1.6.8",Ge={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ge[e]=function(r){return o(r)===e||"a"+(t<1?"n ":" ")+e}}));var We={};Ge.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.8] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new Y(n(o," has been removed"+(t?" in "+t:"")),Y.ERR_DEPRECATED);return t&&!We[o]&&(We[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var Ke={assertOptions:function(e,t,r){if("object"!==o(e))throw new Y("options must be an object",Y.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var a=n[i],s=t[a];if(s){var u=e[a],c=void 0===u||s(u,a,e);if(!0!==c)throw new Y("option "+a+" must be "+c,Y.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Y("Unknown option "+a,Y.ERR_BAD_OPTION)}},validators:Ge},Ve=Ke.validators,Xe=function(){function e(t){a(this,e),this.defaults=t,this.interceptors={request:new he,response:new he}}var t,n;return u(e,[{key:"request",value:(t=r().mark((function e(t,n){var o,i;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,n);case 3:return e.abrupt("return",e.sent);case 6:throw e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error&&(Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error,i=o.stack?o.stack.replace(/^.+\n/,""):"",e.t0.stack?i&&!String(e.t0.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+i):e.t0.stack=i),e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])})),n=function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(e){i(a,n,o,s,u,"next",e)}function u(e){i(a,n,o,s,u,"throw",e)}s(void 0)}))},function(e,t){return n.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=He(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Ke.assertOptions(n,{silentJSONParsing:Ve.transitional(Ve.boolean),forcedJSONParsing:Ve.transitional(Ve.boolean),clarifyTimeoutError:Ve.transitional(Ve.boolean)},!1),null!=o&&(Q.isFunction(o)?t.paramsSerializer={serialize:o}:Ke.assertOptions(o,{encode:Ve.function,serialize:Ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Q.merge(i.common,i[t.method]);i&&Q.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=xe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var p=[ze.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new ke(e,t,o),r(n.reason))}))}return u(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Ye={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ye).forEach((function(e){var t=f(e,2),r=t[0],n=t[1];Ye[n]=r}));var Ze=Ye;var et=function e(t){var r=new $e(t),n=m($e.prototype.request,r);return Q.extend(n,$e.prototype,r,{allOwnKeys:!0}),Q.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(He(t,r))},n}(Ee);return et.Axios=$e,et.CanceledError=ke,et.CancelToken=Qe,et.isCancel=Ne,et.VERSION=Je,et.toFormData=ie,et.AxiosError=Y,et.Cancel=et.CanceledError,et.all=function(e){return Promise.all(e)},et.spread=function(e){return function(t){return e.apply(null,t)}},et.isAxiosError=function(e){return Q.isObject(e)&&!0===e.isAxiosError},et.mergeConfig=He,et.AxiosHeaders=xe,et.formToJSON=function(e){return be(Q.isHTMLForm(e)?new FormData(e):e)},et.getAdapter=Ie,et.HttpStatusCode=Ze,et.default=et,et})); -//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map deleted file mode 100644 index 0bcd018..0000000 --- a/node_modules/axios/dist/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/platform/common/utils.js","../lib/defaults/transitional.js","../lib/platform/browser/index.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/index.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/helpers/isURLSameOrigin.js","../lib/adapters/xhr.js","../lib/helpers/speedometer.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n"],"names":["bind","fn","thisArg","apply","arguments","cache","toString","Object","prototype","getPrototypeOf","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","i","l","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","_ref4","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","_ref2","this","caseless","result","assignValue","targetKey","extend","a","b","_ref3","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","serializeFn","serialize","hashmarkIndex","encoder","product","InterceptorManager$1","InterceptorManager","_classCallCheck","handlers","_createClass","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","_objectSpread","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","rawHeaders","parsed","setHeaders","line","substring","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","_slicedToArray","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","onCanceled","requestData","requestHeaders","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","_toConsumableArray","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","isURLSameOrigin","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","wrap","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken$1","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs deleted file mode 100644 index 65d1313..0000000 --- a/node_modules/axios/dist/browser/axios.cjs +++ /dev/null @@ -1,3258 +0,0 @@ -// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors -'use strict'; - -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -// eslint-disable-next-line strict -var httpAdapter = null; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -var InterceptorManager$1 = InterceptorManager; - -var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - -var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - -var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - -var platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -var platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -var defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -var parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders); - -var AxiosHeaders$1 = AxiosHeaders; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError( - 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -var cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -var isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -var adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const VERSION = "1.6.8"; - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } -} - -var validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -var Axios$1 = Axios; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -var CancelToken$1 = CancelToken; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -var HttpStatusCode$1 = HttpStatusCode; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$1; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken$1; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/browser/axios.cjs.map b/node_modules/axios/dist/browser/axios.cjs.map deleted file mode 100644 index 0f335dc..0000000 --- a/node_modules/axios/dist/browser/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","encode","URLSearchParams","FormData","Blob","platform","defaults","AxiosHeaders","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.js b/node_modules/axios/dist/esm/axios.js deleted file mode 100644 index 8c71127..0000000 --- a/node_modules/axios/dist/esm/axios.js +++ /dev/null @@ -1,3281 +0,0 @@ -// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -const utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError$1(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError$1, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError$1.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError$1, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError$1.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError$1.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -// eslint-disable-next-line strict -const httpAdapter = null; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData$1(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData$1(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -const URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - -const FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - -const Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - -const platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -const utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -const platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData$1( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -const defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -const parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders$1 { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders$1.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders$1); - -const AxiosHeaders$2 = AxiosHeaders$1; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$2.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel$1(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError$1(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError$1.call(this, message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError$1, AxiosError$1, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError$1( - 'Request failed with status code ' + response.status, - [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -const isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$2.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$2.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -const adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError$1(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError$1( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError$1(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$2.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$2.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel$1(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$2.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$2 ? { ...thing } : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig$1(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const VERSION$1 = "1.6.8"; - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION$1 + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError$1( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError$1.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); - } - } -} - -const validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios$1 { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig$1(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$2.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig$1(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios$1.prototype[method] = function(url, config) { - return this.request(mergeConfig$1(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig$1(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios$1.prototype[method] = generateHTTPMethod(); - - Axios$1.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -const Axios$2 = Axios$1; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken$1 { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError$1(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken$1(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -const CancelToken$2 = CancelToken$1; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread$1(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError$1(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode$1 = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode$1).forEach(([key, value]) => { - HttpStatusCode$1[value] = key; -}); - -const HttpStatusCode$2 = HttpStatusCode$1; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$2(defaultConfig); - const instance = bind(Axios$2.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$2.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$2; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError$1; -axios.CancelToken = CancelToken$2; -axios.isCancel = isCancel$1; -axios.VERSION = VERSION$1; -axios.toFormData = toFormData$1; - -// Expose AxiosError class -axios.AxiosError = AxiosError$1; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread$1; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError$1; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig$1; - -axios.AxiosHeaders = AxiosHeaders$2; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$2; - -axios.default = axios; - -// this module should only have a default export -const axios$1 = axios; - -// This module is intended to unwrap Axios default export as named. -// Keep top-level export same with static properties -// so that it can keep same with es module or cjs -const { - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} = axios$1; - -export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios$1 as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData }; -//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/esm/axios.js.map b/node_modules/axios/dist/esm/axios.js.map deleted file mode 100644 index 764b10e..0000000 --- a/node_modules/axios/dist/esm/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","defaults","isCancel","CanceledError","mergeConfig","VERSION","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.min.js b/node_modules/axios/dist/esm/axios.min.js deleted file mode 100644 index 7b428c3..0000000 --- a/node_modules/axios/dist/esm/axios.min.js +++ /dev/null @@ -1,2 +0,0 @@ -function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,r=(o=Object.create(null),e=>{const n=t.call(e);return o[n]||(o[n]=n.slice(8,-1).toLowerCase())});var o;const s=e=>(e=e.toLowerCase(),t=>r(t)===e),i=e=>t=>typeof t===e,{isArray:a}=Array,c=i("undefined");const u=s("ArrayBuffer");const l=i("string"),f=i("function"),d=i("number"),p=e=>null!==e&&"object"==typeof e,h=e=>{if("object"!==r(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},m=s("Date"),y=s("File"),g=s("Blob"),b=s("FileList"),E=s("URLSearchParams");function w(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),a(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,R=e=>!c(e)&&e!==S;const A=(T="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>T&&e instanceof T);var T;const j=s("HTMLFormElement"),C=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),N=s("RegExp"),v=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};w(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},x="abcdefghijklmnopqrstuvwxyz",P={DIGIT:"0123456789",ALPHA:x,ALPHA_DIGIT:x+x.toUpperCase()+"0123456789"};const _=s("AsyncFunction"),F={isArray:a,isArrayBuffer:u,isBuffer:function(e){return null!==e&&!c(e)&&null!==e.constructor&&!c(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=r(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&u(e.buffer),t},isString:l,isNumber:d,isBoolean:e=>!0===e||!1===e,isObject:p,isPlainObject:h,isUndefined:c,isDate:m,isFile:y,isBlob:g,isRegExp:N,isFunction:f,isStream:e=>p(e)&&f(e.pipe),isURLSearchParams:E,isTypedArray:A,isFileList:b,forEach:w,merge:function e(){const{caseless:t}=R(this)&&this||{},n={},r=(r,o)=>{const s=t&&O(n,o)||o;h(n[s])&&h(r)?n[s]=e(n[s],r):h(r)?n[s]=e({},r):a(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e(w(n,((n,o)=>{r&&f(n)?t[o]=e(n,r):t[o]=n}),{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,i,a;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)a=s[i],o&&!o(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:r,kindOfTest:s,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(a(e))return e;let t=e.length;if(!d(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:j,hasOwnProperty:C,hasOwnProp:C,reduceDescriptors:v,freezeMethods:e=>{v(e,((t,n)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return a(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:O,global:S,isContextDefined:R,ALPHABET:P,generateString:(e=16,t=P.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(p(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=a(e)?[]:{};return w(e,((e,t)=>{const s=n(e,r+1);!c(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:_,isThenable:e=>e&&(p(e)||f(e))&&f(e.then)&&f(e.catch)};function U(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}F.inherits(U,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:F.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const B=U.prototype,D={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{D[e]={value:e}})),Object.defineProperties(U,D),Object.defineProperty(B,"isAxiosError",{value:!0}),U.from=(e,t,n,r,o,s)=>{const i=Object.create(B);return F.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),U.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,s&&Object.assign(i,s),i};function L(e){return F.isPlainObject(e)||F.isArray(e)}function k(e){return F.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,n){return e?e.concat(t).map((function(e,t){return e=k(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const I=F.toFlatObject(F,{},null,(function(e){return/^is[A-Z]/.test(e)}));function z(e,t,n){if(!F.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=F.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!F.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,s=n.dots,i=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&F.isSpecCompliantForm(t);if(!F.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(F.isDate(e))return e.toISOString();if(!a&&F.isBlob(e))throw new U("Blob is not supported. Use a Buffer instead.");return F.isArrayBuffer(e)||F.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let a=e;if(e&&!o&&"object"==typeof e)if(F.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(F.isArray(e)&&function(e){return F.isArray(e)&&!e.some(L)}(e)||(F.isFileList(e)||F.endsWith(n,"[]"))&&(a=F.toArray(e)))return n=k(n),a.forEach((function(e,r){!F.isUndefined(e)&&null!==e&&t.append(!0===i?q([n],r,s):null===i?n:n+"[]",c(e))})),!1;return!!L(e)||(t.append(q(o,n,s),c(e)),!1)}const l=[],f=Object.assign(I,{defaultVisitor:u,convertValue:c,isVisitable:L});if(!F.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!F.isUndefined(n)){if(-1!==l.indexOf(n))throw Error("Circular reference detected in "+r.join("."));l.push(n),F.forEach(n,(function(n,s){!0===(!(F.isUndefined(n)||null===n)&&o.call(t,n,F.isString(s)?s.trim():s,r,f))&&e(n,r?r.concat(s):[s])})),l.pop()}}(e),t}function M(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function H(e,t){this._pairs=[],e&&z(e,this,t)}const J=H.prototype;function W(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function V(e,t,n){if(!t)return e;const r=n&&n.encode||W,o=n&&n.serialize;let s;if(s=o?o(t,n):F.isURLSearchParams(t)?t.toString():new H(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}J.append=function(e,t){this._pairs.push([e,t])},J.toString=function(e){const t=e?function(t){return e.call(this,t,M)}:M;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const K=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){F.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},G={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:H,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},X="undefined"!=typeof window&&"undefined"!=typeof document,Q=(Z="undefined"!=typeof navigator&&navigator.product,X&&["ReactNative","NativeScript","NS"].indexOf(Z)<0);var Z;const Y="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ee={...Object.freeze({__proto__:null,hasBrowserEnv:X,hasStandardBrowserWebWorkerEnv:Y,hasStandardBrowserEnv:Q}),...$};function te(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&F.isArray(r)?r.length:s,a)return F.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&F.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&F.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r{t(function(e){return F.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const ne={transitional:G,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=F.isObject(e);o&&F.isHTMLForm(e)&&(e=new FormData(e));if(F.isFormData(e))return r?JSON.stringify(te(e)):e;if(F.isArrayBuffer(e)||F.isBuffer(e)||F.isStream(e)||F.isFile(e)||F.isBlob(e))return e;if(F.isArrayBufferView(e))return e.buffer;if(F.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return z(e,new ee.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ee.isNode&&F.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=F.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return z(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(F.isString(e))try{return(t||JSON.parse)(e),F.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ne.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&F.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw U.from(e,U.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ee.classes.FormData,Blob:ee.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};F.forEach(["delete","get","head","post","put","patch"],(e=>{ne.headers[e]={}}));const re=ne,oe=F.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),se=Symbol("internals");function ie(e){return e&&String(e).trim().toLowerCase()}function ae(e){return!1===e||null==e?e:F.isArray(e)?e.map(ae):String(e)}function ce(e,t,n,r,o){return F.isFunction(r)?r.call(this,t,n):(o&&(t=n),F.isString(t)?F.isString(r)?-1!==t.indexOf(r):F.isRegExp(r)?r.test(t):void 0:void 0)}class ue{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=ie(t);if(!o)throw new Error("header name must be a non-empty string");const s=F.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=ae(e))}const s=(e,t)=>F.forEach(e,((e,n)=>o(e,n,t)));return F.isPlainObject(e)||e instanceof this.constructor?s(e,t):F.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&oe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=ie(e)){const n=F.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(F.isFunction(t))return t.call(this,e,n);if(F.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ie(e)){const n=F.findKey(this,e);return!(!n||void 0===this[n]||t&&!ce(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=ie(e)){const o=F.findKey(n,e);!o||t&&!ce(0,n[o],o,t)||(delete n[o],r=!0)}}return F.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!ce(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return F.forEach(this,((r,o)=>{const s=F.findKey(n,o);if(s)return t[s]=ae(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();i!==o&&delete t[o],t[i]=ae(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return F.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&F.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[se]=this[se]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=ie(e);t[r]||(!function(e,t){const n=F.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return F.isArray(e)?e.forEach(r):r(e),this}}ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),F.reduceDescriptors(ue.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),F.freezeMethods(ue);const le=ue;function fe(e,t){const n=this||re,r=t||n,o=le.from(r.headers);let s=r.data;return F.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function de(e){return!(!e||!e.__CANCEL__)}function pe(e,t,n){U.call(this,null==e?"canceled":e,U.ERR_CANCELED,t,n),this.name="CanceledError"}F.inherits(pe,U,{__CANCEL__:!0});const he=ee.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];F.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),F.isString(r)&&i.push("path="+r),F.isString(o)&&i.push("domain="+o),!0===s&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function me(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const ye=ee.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=F.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function ge(e,t){let n=0;const r=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=r[i];o||(o=c),n[s]=a,r[s]=c;let l=i,f=0;for(;l!==s;)f+=n[l++],l%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-o{const s=o.loaded,i=o.lengthComputable?o.total:void 0,a=s-n,c=r(a);n=s;const u={loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&s<=i?(i-s)/c:void 0,event:o};u[t?"download":"upload"]=!0,e(u)}}const be={http:null,xhr:"undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=le.from(e.headers).normalize();let s,i,{responseType:a,withXSRFToken:c}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(F.isFormData(r))if(ee.hasStandardBrowserEnv||ee.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if(!1!==(i=o.getContentType())){const[e,...t]=i?i.split(";").map((e=>e.trim())).filter(Boolean):[];o.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const f=me(e.baseURL,e.url);function d(){if(!l)return;const r=le.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new U("Request failed with status code "+n.status,[U.ERR_BAD_REQUEST,U.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),u()}),(function(e){n(e),u()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),V(f,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=d:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(d)},l.onabort=function(){l&&(n(new U("Request aborted",U.ECONNABORTED,e,l)),l=null)},l.onerror=function(){n(new U("Network Error",U.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||G;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new U(t,r.clarifyTimeoutError?U.ETIMEDOUT:U.ECONNABORTED,e,l)),l=null},ee.hasStandardBrowserEnv&&(c&&F.isFunction(c)&&(c=c(e)),c||!1!==c&&ye(f))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&he.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&F.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),F.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ge(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ge(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(n(!t||t.type?new pe(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(f);p&&-1===ee.protocols.indexOf(p)?n(new U("Unsupported protocol "+p+":",U.ERR_BAD_REQUEST,e)):l.send(r||null)}))}};F.forEach(be,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Ee=e=>`- ${e}`,we=e=>F.isFunction(e)||null===e||!1===e,Oe=e=>{e=F.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new U("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ee).join("\n"):" "+Ee(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Se(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function Re(e){Se(e),e.headers=le.from(e.headers),e.data=fe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Oe(e.adapter||re.adapter)(e).then((function(t){return Se(e),t.data=fe.call(e,e.transformResponse,t),t.headers=le.from(t.headers),t}),(function(t){return de(t)||(Se(e),t&&t.response&&(t.response.data=fe.call(e,e.transformResponse,t.response),t.response.headers=le.from(t.response.headers))),Promise.reject(t)}))}const Ae=e=>e instanceof le?{...e}:e;function Te(e,t){t=t||{};const n={};function r(e,t,n){return F.isPlainObject(e)&&F.isPlainObject(t)?F.merge.call({caseless:n},e,t):F.isPlainObject(t)?F.merge({},t):F.isArray(t)?t.slice():t}function o(e,t,n){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!F.isUndefined(t))return r(void 0,t)}function i(e,t){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(Ae(e),Ae(t),!0)};return F.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,i=s(e[r],t[r],r);F.isUndefined(i)&&s!==a||(n[r]=i)})),n}const je={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{je[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ce={};je.transitional=function(e,t,n){function r(e,t){return"[Axios v1.6.8] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new U(r(o," has been removed"+(t?" in "+t:"")),U.ERR_DEPRECATED);return t&&!Ce[o]&&(Ce[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const Ne={assertOptions:function(e,t,n){if("object"!=typeof e)throw new U("options must be an object",U.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new U("option "+s+" must be "+n,U.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new U("Unknown option "+s,U.ERR_BAD_OPTION)}},validators:je},ve=Ne.validators;class xe{constructor(e){this.defaults=e,this.interceptors={request:new K,response:new K}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Te(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Ne.assertOptions(n,{silentJSONParsing:ve.transitional(ve.boolean),forcedJSONParsing:ve.transitional(ve.boolean),clarifyTimeoutError:ve.transitional(ve.boolean)},!1),null!=r&&(F.isFunction(r)?t.paramsSerializer={serialize:r}:Ne.assertOptions(r,{encode:ve.function,serialize:ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&F.merge(o.common,o[t.method]);o&&F.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=le.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let u;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,f=0;if(!a){const e=[Re.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),l=e.length,u=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new pe(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new _e((function(t){e=t})),cancel:e}}}const Fe=_e;const Ue={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ue).forEach((([e,t])=>{Ue[t]=e}));const Be=Ue;const De=function t(n){const r=new Pe(n),o=e(Pe.prototype.request,r);return F.extend(o,Pe.prototype,r,{allOwnKeys:!0}),F.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(Te(n,e))},o}(re);De.Axios=Pe,De.CanceledError=pe,De.CancelToken=Fe,De.isCancel=de,De.VERSION="1.6.8",De.toFormData=z,De.AxiosError=U,De.Cancel=De.CanceledError,De.all=function(e){return Promise.all(e)},De.spread=function(e){return function(t){return e.apply(null,t)}},De.isAxiosError=function(e){return F.isObject(e)&&!0===e.isAxiosError},De.mergeConfig=Te,De.AxiosHeaders=le,De.formToJSON=e=>te(F.isHTMLForm(e)?new FormData(e):e),De.getAdapter=Oe,De.HttpStatusCode=Be,De.default=De;const Le=De,{Axios:ke,AxiosError:qe,CanceledError:Ie,isCancel:ze,CancelToken:Me,VERSION:He,all:Je,Cancel:We,isAxiosError:Ve,spread:Ke,toFormData:Ge,AxiosHeaders:$e,HttpStatusCode:Xe,formToJSON:Qe,getAdapter:Ze,mergeConfig:Ye}=Le;export{ke as Axios,qe as AxiosError,$e as AxiosHeaders,We as Cancel,Me as CancelToken,Ie as CanceledError,Xe as HttpStatusCode,He as VERSION,Je as all,Le as default,Qe as formToJSON,Ze as getAdapter,Ve as isAxiosError,ze as isCancel,Ye as mergeConfig,Ke as spread,Ge as toFormData}; -//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/esm/axios.min.js.map b/node_modules/axios/dist/esm/axios.min.js.map deleted file mode 100644 index 94ea4b2..0000000 --- a/node_modules/axios/dist/esm/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/helpers/speedometer.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["bind","fn","thisArg","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","ALPHABET","DIGIT","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","catch","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","get","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","static","first","computed","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$2","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","cookies","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","isURLSameOrigin","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","requestData","requestHeaders","onCanceled","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","parseProtocol","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","async","configOrUrl","_request","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$2","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$2","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$2","axios","createInstance","defaultConfig","instance","VERSION","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter","default","axios$1"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/node/axios.cjs b/node_modules/axios/dist/node/axios.cjs deleted file mode 100644 index f6fedeb..0000000 --- a/node_modules/axios/dist/node/axios.cjs +++ /dev/null @@ -1,4354 +0,0 @@ -// Axios v1.6.8 Copyright (c) 2024 Matt Zabriskie and contributors -'use strict'; - -const FormData$1 = require('form-data'); -const url = require('url'); -const proxyFromEnv = require('proxy-from-env'); -const http = require('http'); -const https = require('https'); -const util = require('util'); -const followRedirects = require('follow-redirects'); -const zlib = require('zlib'); -const stream = require('stream'); -const events = require('events'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); -const url__default = /*#__PURE__*/_interopDefaultLegacy(url); -const http__default = /*#__PURE__*/_interopDefaultLegacy(http); -const https__default = /*#__PURE__*/_interopDefaultLegacy(https); -const util__default = /*#__PURE__*/_interopDefaultLegacy(util); -const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); -const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); -const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); - -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -const utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData__default["default"] || FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -const URLSearchParams = url__default["default"].URLSearchParams; - -const platform$1 = { - isNode: true, - classes: { - URLSearchParams, - FormData: FormData__default["default"], - Blob: typeof Blob !== 'undefined' && Blob || null - }, - protocols: [ 'http', 'https', 'file', 'data' ] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -const utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -const platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -const defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -const parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders); - -const AxiosHeaders$1 = AxiosHeaders; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError( - 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -const VERSION = "1.6.8"; - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; - -/** - * Parse data uri to a Buffer or Blob - * - * @param {String} uri - * @param {?Boolean} asBlob - * @param {?Object} options - * @param {?Function} options.Blob - * - * @returns {Buffer|Blob} - */ -function fromDataURI(uri, asBlob, options) { - const _Blob = options && options.Blob || platform.classes.Blob; - const protocol = parseProtocol(uri); - - if (asBlob === undefined && _Blob) { - asBlob = true; - } - - if (protocol === 'data') { - uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - - const match = DATA_URL_PATTERN.exec(uri); - - if (!match) { - throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); - } - - const mime = match[1]; - const isBase64 = match[2]; - const body = match[3]; - const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - - if (asBlob) { - if (!_Blob) { - throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); - } - - return new _Blob([buffer], {type: mime}); - } - - return buffer; - } - - throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); -} - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - const threshold = 1000 / freq; - let timer = null; - return function throttled(force, args) { - const now = Date.now(); - if (force || now - timestamp > threshold) { - if (timer) { - clearTimeout(timer); - timer = null; - } - timestamp = now; - return fn.apply(null, args); - } - if (!timer) { - timer = setTimeout(() => { - timer = null; - timestamp = Date.now(); - return fn.apply(null, args); - }, threshold - (now - timestamp)); - } - }; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream__default["default"].Transform{ - constructor(options) { - options = utils$1.toFlatObject(options, { - maxRate: 0, - chunkSize: 64 * 1024, - minChunkSize: 100, - timeWindow: 500, - ticksRate: 2, - samplesCount: 15 - }, null, (prop, source) => { - return !utils$1.isUndefined(source[prop]); - }); - - super({ - readableHighWaterMark: options.chunkSize - }); - - const self = this; - - const internals = this[kInternals] = { - length: options.length, - timeWindow: options.timeWindow, - ticksRate: options.ticksRate, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null - }; - - const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); - - this.on('newListener', event => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - - let bytesNotified = 0; - - internals.updateProgress = throttle(function throttledHandler() { - const totalBytes = internals.length; - const bytesTransferred = internals.bytesSeen; - const progressBytes = bytesTransferred - bytesNotified; - if (!progressBytes || self.destroyed) return; - - const rate = _speedometer(progressBytes); - - bytesNotified = bytesTransferred; - - process.nextTick(() => { - self.emit('progress', { - 'loaded': bytesTransferred, - 'total': totalBytes, - 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, - 'bytes': progressBytes, - 'rate': rate ? rate : undefined, - 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? - (totalBytes - bytesTransferred) / rate : undefined - }); - }); - }, internals.ticksRate); - - const onFinish = () => { - internals.updateProgress(true); - }; - - this.once('end', onFinish); - this.once('error', onFinish); - } - - _read(size) { - const internals = this[kInternals]; - - if (internals.onReadCallback) { - internals.onReadCallback(); - } - - return super._read(size); - } - - _transform(chunk, encoding, callback) { - const self = this; - const internals = this[kInternals]; - const maxRate = internals.maxRate; - - const readableHighWaterMark = this.readableHighWaterMark; - - const timeWindow = internals.timeWindow; - - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); - const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - - function pushChunk(_chunk, _callback) { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - - if (internals.isCaptured) { - internals.updateProgress(); - } - - if (self.push(_chunk)) { - process.nextTick(_callback); - } else { - internals.onReadCallback = () => { - internals.onReadCallback = null; - process.nextTick(_callback); - }; - } - } - - const transformChunk = (_chunk, _callback) => { - const chunkSize = Buffer.byteLength(_chunk); - let chunkRemainder = null; - let maxChunkSize = readableHighWaterMark; - let bytesLeft; - let passed = 0; - - if (maxRate) { - const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { - internals.ts = now; - bytesLeft = bytesThreshold - internals.bytes; - internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; - passed = 0; - } - - bytesLeft = bytesThreshold - internals.bytes; - } - - if (maxRate) { - if (bytesLeft <= 0) { - // next time window - return setTimeout(() => { - _callback(null, _chunk); - }, timeWindow - passed); - } - - if (bytesLeft < maxChunkSize) { - maxChunkSize = bytesLeft; - } - } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { - chunkRemainder = _chunk.subarray(maxChunkSize); - _chunk = _chunk.subarray(0, maxChunkSize); - } - - pushChunk(_chunk, chunkRemainder ? () => { - process.nextTick(_callback, null, chunkRemainder); - } : _callback); - }; - - transformChunk(chunk, function transformNextChunk(err, _chunk) { - if (err) { - return callback(err); - } - - if (_chunk) { - transformChunk(_chunk, transformNextChunk); - } else { - callback(null); - } - }); - } - - setLength(length) { - this[kInternals].length = +length; - return this; - } -} - -const AxiosTransformStream$1 = AxiosTransformStream; - -const {asyncIterator} = Symbol; - -const readBlob = async function* (blob) { - if (blob.stream) { - yield* blob.stream(); - } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer(); - } else if (blob[asyncIterator]) { - yield* blob[asyncIterator](); - } else { - yield blob; - } -}; - -const readBlob$1 = readBlob; - -const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = new util.TextEncoder(); - -const CRLF = '\r\n'; -const CRLF_BYTES = textEncoder.encode(CRLF); -const CRLF_BYTES_COUNT = 2; - -class FormDataPart { - constructor(name, value) { - const {escapeName} = this.constructor; - const isStringValue = utils$1.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - - if (isStringValue) { - value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); - } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; - } - - this.headers = textEncoder.encode(headers + CRLF); - - this.contentLength = isStringValue ? value.byteLength : value.size; - - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - - this.name = name; - this.value = value; - } - - async *encode(){ - yield this.headers; - - const {value} = this; - - if(utils$1.isTypedArray(value)) { - yield value; - } else { - yield* readBlob$1(value); - } - - yield CRLF_BYTES; - } - - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); - } -} - -const formDataToStream = (form, headersHandler, options) => { - const { - tag = 'form-data-boundary', - size = 25, - boundary = tag + '-' + utils$1.generateString(size, BOUNDARY_ALPHABET) - } = options || {}; - - if(!utils$1.isFormData(form)) { - throw TypeError('FormData instance required'); - } - - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') - } - - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); - const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); - let contentLength = footerBytes.byteLength; - - const parts = Array.from(form.entries()).map(([name, value]) => { - const part = new FormDataPart(name, value); - contentLength += part.size; - return part; - }); - - contentLength += boundaryBytes.byteLength * parts.length; - - contentLength = utils$1.toFiniteNumber(contentLength); - - const computedHeaders = { - 'Content-Type': `multipart/form-data; boundary=${boundary}` - }; - - if (Number.isFinite(contentLength)) { - computedHeaders['Content-Length'] = contentLength; - } - - headersHandler && headersHandler(computedHeaders); - - return stream.Readable.from((async function *() { - for(const part of parts) { - yield boundaryBytes; - yield* part.encode(); - } - - yield footerBytes; - })()); -}; - -const formDataToStream$1 = formDataToStream; - -class ZlibHeaderTransformStream extends stream__default["default"].Transform { - __transform(chunk, encoding, callback) { - this.push(chunk); - callback(); - } - - _transform(chunk, encoding, callback) { - if (chunk.length !== 0) { - this._transform = this.__transform; - - // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 - const header = Buffer.alloc(2); - header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C - this.push(header, encoding); - } - } - - this.__transform(chunk, encoding, callback); - } -} - -const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; - -const callbackify = (fn, reducer) => { - return utils$1.isAsyncFn(fn) ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); - } - }, cb); - } : fn; -}; - -const callbackify$1 = callbackify; - -const zlibOptions = { - flush: zlib__default["default"].constants.Z_SYNC_FLUSH, - finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH -}; - -const brotliOptions = { - flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH -}; - -const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"]; - -const isHttps = /https:?/; - -const supportedProtocols = platform.protocols.map(protocol => { - return protocol + ':'; -}); - -/** - * If the proxy or config beforeRedirects functions are defined, call them with the options - * object. - * - * @param {Object} options - The options object that was passed to the request. - * - * @returns {Object} - */ -function dispatchBeforeRedirect(options, responseDetails) { - if (options.beforeRedirects.proxy) { - options.beforeRedirects.proxy(options); - } - if (options.beforeRedirects.config) { - options.beforeRedirects.config(options, responseDetails); - } -} - -/** - * If the proxy or config afterRedirects functions are defined, call them with the options - * - * @param {http.ClientRequestArgs} options - * @param {AxiosProxyConfig} configProxy configuration from Axios options object - * @param {string} location - * - * @returns {http.ClientRequestArgs} - */ -function setProxy(options, configProxy, location) { - let proxy = configProxy; - if (!proxy && proxy !== false) { - const proxyUrl = proxyFromEnv.getProxyForUrl(location); - if (proxyUrl) { - proxy = new URL(proxyUrl); - } - } - if (proxy) { - // Basic proxy authorization - if (proxy.username) { - proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); - } - - if (proxy.auth) { - // Support proxy auth object form - if (proxy.auth.username || proxy.auth.password) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } - const base64 = Buffer - .from(proxy.auth, 'utf8') - .toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; - } - - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); - const proxyHost = proxy.hostname || proxy.host; - options.hostname = proxyHost; - // Replace 'host' since options is not a URL object - options.host = proxyHost; - options.port = proxy.port; - options.path = location; - if (proxy.protocol) { - options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; - } - } - - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { - // Configure proxy for redirected request, passing the original config proxy to apply - // the exact same logic as if the redirected request was performed by axios directly. - setProxy(redirectOptions, configProxy, redirectOptions.href); - }; -} - -const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; - -// temporary hotfix - -const wrapAsync = (asyncExecutor) => { - return new Promise((resolve, reject) => { - let onDone; - let isDone; - - const done = (value, isRejected) => { - if (isDone) return; - isDone = true; - onDone && onDone(value, isRejected); - }; - - const _resolve = (value) => { - done(value); - resolve(value); - }; - - const _reject = (reason) => { - done(reason, true); - reject(reason); - }; - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) -}; - -const resolveFamily = ({address, family}) => { - if (!utils$1.isString(address)) { - throw TypeError('address must be a string'); - } - return ({ - address, - family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); -}; - -const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family}); - -/*eslint consistent-return:0*/ -const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family} = config; - const {responseType, responseEncoding} = config; - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - - if (lookup) { - const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); - // hotfix to support opt.all option which is required for node 20.x - lookup = (hostname, opt, cb) => { - _lookup(hostname, opt, (err, arg0, arg1) => { - if (err) { - return cb(err); - } - - const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); - }); - }; - } - - // temporary internal emitter until the AxiosRequest class will be implemented - const emitter = new events.EventEmitter(); - - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - - emitter.removeAllListeners(); - }; - - onDone((value, isRejected) => { - isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - } - }); - - function abort(reason) { - emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); - } - - emitter.once('abort', reject); - - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url); - const parsed = new URL(fullPath, 'http://localhost'); - const protocol = parsed.protocol || supportedProtocols[0]; - - if (protocol === 'data:') { - let convertedData; - - if (method !== 'GET') { - return settle(resolve, reject, { - status: 405, - statusText: 'method not allowed', - headers: {}, - config - }); - } - - try { - convertedData = fromDataURI(config.url, responseType === 'blob', { - Blob: config.env && config.env.Blob - }); - } catch (err) { - throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); - } - - if (responseType === 'text') { - convertedData = convertedData.toString(responseEncoding); - - if (!responseEncoding || responseEncoding === 'utf8') { - convertedData = utils$1.stripBOM(convertedData); - } - } else if (responseType === 'stream') { - convertedData = stream__default["default"].Readable.from(convertedData); - } - - return settle(resolve, reject, { - data: convertedData, - status: 200, - statusText: 'OK', - headers: new AxiosHeaders$1(), - config - }); - } - - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError( - 'Unsupported protocol ' + protocol, - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - const headers = AxiosHeaders$1.from(config.headers).normalize(); - - // Set User-Agent (required by some servers) - // See https://github.com/axios/axios/issues/69 - // User-Agent is specified; handle case where no UA header is desired - // Only set header if it hasn't been set in config - headers.set('User-Agent', 'axios/' + VERSION, false); - - const onDownloadProgress = config.onDownloadProgress; - const onUploadProgress = config.onUploadProgress; - const maxRate = config.maxRate; - let maxUploadRate = undefined; - let maxDownloadRate = undefined; - - // support for spec compliant FormData objects - if (utils$1.isSpecCompliantForm(data)) { - const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream$1(data, (formHeaders) => { - headers.set(formHeaders); - }, { - tag: `axios-${VERSION}-boundary`, - boundary: userBoundary && userBoundary[1] || undefined - }); - // support for https://www.npmjs.com/package/form-data api - } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { - headers.set(data.getHeaders()); - - if (!headers.hasContentLength()) { - try { - const knownLength = await util__default["default"].promisify(data.getLength).call(data); - Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); - /*eslint no-empty:0*/ - } catch (e) { - } - } - } else if (utils$1.isBlob(data)) { - data.size && headers.setContentType(data.type || 'application/octet-stream'); - headers.setContentLength(data.size || 0); - data = stream__default["default"].Readable.from(readBlob$1(data)); - } else if (data && !utils$1.isStream(data)) { - if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { - data = Buffer.from(new Uint8Array(data)); - } else if (utils$1.isString(data)) { - data = Buffer.from(data, 'utf-8'); - } else { - return reject(new AxiosError( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - // Add Content-Length header if data exists - headers.setContentLength(data.length, false); - - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError( - 'Request body larger than maxBodyLength limit', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - } - - const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); - - if (utils$1.isArray(maxRate)) { - maxUploadRate = maxRate[0]; - maxDownloadRate = maxRate[1]; - } else { - maxUploadRate = maxDownloadRate = maxRate; - } - - if (data && (onUploadProgress || maxUploadRate)) { - if (!utils$1.isStream(data)) { - data = stream__default["default"].Readable.from(data, {objectMode: false}); - } - - data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ - length: contentLength, - maxRate: utils$1.toFiniteNumber(maxUploadRate) - })], utils$1.noop); - - onUploadProgress && data.on('progress', progress => { - onUploadProgress(Object.assign(progress, { - upload: true - })); - }); - } - - // HTTP basic authentication - let auth = undefined; - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password || ''; - auth = username + ':' + password; - } - - if (!auth && parsed.username) { - const urlUsername = parsed.username; - const urlPassword = parsed.password; - auth = urlUsername + ':' + urlPassword; - } - - auth && headers.delete('authorization'); - - let path; - - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); - } catch (err) { - const customErr = new Error(err.message); - customErr.config = config; - customErr.url = config.url; - customErr.exists = true; - return reject(customErr); - } - - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); - - const options = { - path, - method: method, - headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: {} - }; - - // cacheable-lookup integration hotfix - !utils$1.isUndefined(lookup) && (options.lookup = lookup); - - if (config.socketPath) { - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname; - options.port = parsed.port; - setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); - } - - let transport; - const isHttpsRequest = isHttps.test(options.protocol); - options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (config.transport) { - transport = config.transport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https__default["default"] : http__default["default"]; - } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - if (config.beforeRedirect) { - options.beforeRedirects.config = config.beforeRedirect; - } - transport = isHttpsRequest ? httpsFollow : httpFollow; - } - - if (config.maxBodyLength > -1) { - options.maxBodyLength = config.maxBodyLength; - } else { - // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited - options.maxBodyLength = Infinity; - } - - if (config.insecureHTTPParser) { - options.insecureHTTPParser = config.insecureHTTPParser; - } - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - - const streams = [res]; - - const responseLength = +res.headers['content-length']; - - if (onDownloadProgress) { - const transformStream = new AxiosTransformStream$1({ - length: utils$1.toFiniteNumber(responseLength), - maxRate: utils$1.toFiniteNumber(maxDownloadRate) - }); - - onDownloadProgress && transformStream.on('progress', progress => { - onDownloadProgress(Object.assign(progress, { - download: true - })); - }); - - streams.push(transformStream); - } - - // decompress the response body transparently if required - let responseStream = res; - - // return the last request in case of redirects - const lastRequest = res.req || req; - - // if decompress disabled we should not decompress - if (config.decompress !== false && res.headers['content-encoding']) { - // if no content, but headers still say that it is encoded, - // remove the header not confuse downstream operations - if (method === 'HEAD' || res.statusCode === 204) { - delete res.headers['content-encoding']; - } - - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new ZlibHeaderTransformStream$1()); - - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); - delete res.headers['content-encoding']; - } - } - } - - responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; - - const offListeners = stream__default["default"].finished(responseStream, () => { - offListeners(); - onFinished(); - }); - - const response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new AxiosHeaders$1(res.headers), - config, - request: lastRequest - }; - - if (responseType === 'stream') { - response.data = responseStream; - settle(resolve, reject, response); - } else { - const responseBuffer = []; - let totalResponseBytes = 0; - - responseStream.on('data', function handleStreamData(chunk) { - responseBuffer.push(chunk); - totalResponseBytes += chunk.length; - - // make sure the content length is not over the maxContentLength if specified - if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { - // stream.destroy() emit aborted event before calling reject() on Node.js v16 - rejected = true; - responseStream.destroy(); - reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); - } - }); - - responseStream.on('aborted', function handlerStreamAborted() { - if (rejected) { - return; - } - - const err = new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - responseStream.destroy(err); - reject(err); - }); - - responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; - reject(AxiosError.from(err, null, config, lastRequest)); - }); - - responseStream.on('end', function handleStreamEnd() { - try { - let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); - if (responseType !== 'arraybuffer') { - responseData = responseData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { - responseData = utils$1.stripBOM(responseData); - } - } - response.data = responseData; - } catch (err) { - return reject(AxiosError.from(err, null, config, response.request, response)); - } - settle(resolve, reject, response); - }); - } - - emitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - - emitter.once('abort', err => { - reject(err); - req.destroy(err); - }); - - // Handle errors - req.on('error', function handleRequestError(err) { - // @todo remove - // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; - reject(AxiosError.from(err, null, config, req)); - }); - - // set tcp keep alive to prevent drop connection by peer - req.on('socket', function handleRequestSocket(socket) { - // default interval of sending ack packet is 1 minute - socket.setKeepAlive(true, 1000 * 60); - }); - - // Handle request timeout - if (config.timeout) { - // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. - const timeout = parseInt(config.timeout, 10); - - if (Number.isNaN(timeout)) { - reject(new AxiosError( - 'error trying to parse `config.timeout` to int', - AxiosError.ERR_BAD_OPTION_VALUE, - config, - req - )); - - return; - } - - // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. - // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. - // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. - // And then these socket which be hang up will devouring CPU little by little. - // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. - req.setTimeout(timeout, function handleRequestTimeout() { - if (isDone) return; - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - req - )); - abort(); - }); - } - - - // Send the request - if (utils$1.isStream(data)) { - let ended = false; - let errored = false; - - data.on('end', () => { - ended = true; - }); - - data.once('error', err => { - errored = true; - req.destroy(err); - }); - - data.on('close', () => { - if (!ended && !errored) { - abort(new CanceledError('Request stream has been aborted', config, req)); - } - }); - - data.pipe(req); - } else { - req.end(data); - } - }); -}; - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -const isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -const adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } -} - -const validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -const Axios$1 = Axios; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -const CancelToken$1 = CancelToken; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -const HttpStatusCode$1 = HttpStatusCode; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$1; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken$1; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/node/axios.cjs.map b/node_modules/axios/dist/node/axios.cjs.map deleted file mode 100644 index 8fa9bd1..0000000 --- a/node_modules/axios/dist/node/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/throttle.js","../../lib/helpers/speedometer.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/adapters/http.js","../../lib/helpers/cookies.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","export const VERSION = \"1.6.8\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled(force, args) {\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, args);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, args);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\nimport throttle from './throttle.js';\nimport speedometer from './speedometer.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n 'loaded': bytesTransferred,\n 'total': totalBytes,\n 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined,\n 'bytes': progressBytes,\n 'rate': rate ? rate : undefined,\n 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nexport default AxiosTransformStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","import {TextEncoder} from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport {getProxyForUrl} from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","PlatformFormData","encode","url","FormData","platform","defaults","AxiosHeaders","stream","TextEncoder","readBlob","Readable","zlib","followRedirects","getProxyForUrl","callbackify","EventEmitter","formDataToStream","util","AxiosTransformStream","https","http","ZlibHeaderTransformStream","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEe,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,SAAS,IAAI,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxC,GAAG,CAAC;AACJ;;ACFA;AACA;AACA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;AAChC;AACA,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI;AAClC,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AAC7B,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;AAC1C,EAAC;AACD;AACA,MAAM,UAAU,GAAG,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACvG,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE;AACpE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;AAC1K,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,KAAK;AACd,IAAI,CAAC,OAAO,QAAQ,KAAK,UAAU,IAAI,KAAK,YAAY,QAAQ;AAChE,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU;AAC7C;AACA,SAAS,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC;AACrG,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI;AAC9B,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE;AACrD;AACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClD,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B;AACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,MAAM,OAAO,GAAG,CAAC,MAAM;AACvB;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,OAAO,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/F,CAAC,GAAG,CAAC;AACL;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,8BAA8B;AAC5C,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AAC1D,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,IAAI,MAAM,SAAS,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;AAC9D,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,IAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK;AACpD,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAC3B,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACpC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClC,KAAK,MAAM;AACX,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACnB,KAAK;AACL,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,EAAE,OAAO,CAAC,CAAC;AACX,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,KAAK;AACxE,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAClD,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,IAAI,KAAK,EAAE,gBAAgB,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK;AACjE,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC;AACxC;AACA,EAAE,GAAG;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACrB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG,QAAQ,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AACnG;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,KAAK;AAClD,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACpD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC3B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAC1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI;AACpC;AACA,EAAE,OAAO,KAAK,IAAI;AAClB,IAAI,OAAO,UAAU,IAAI,KAAK,YAAY,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,CAAC,EAAE,OAAO,UAAU,KAAK,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChD;AACA,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD;AACA,MAAM,WAAW,GAAG,GAAG,IAAI;AAC3B,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB;AAC1D,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,MAAM,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACnC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AACnD,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACnD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC/C;AACA,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;AACnC;AACA,IAAI,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAClC,MAAM,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACzB,MAAM,UAAU,CAAC,GAAG,GAAG,MAAM;AAC7B,QAAQ,MAAM,KAAK,CAAC,qCAAqC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACzE,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAC;AACD;AACA,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK;AAClD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI;AACzB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,IAAG;AACH;AACA,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA,MAAM,IAAI,GAAG,MAAM,GAAE;AACrB;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK;AAChD,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;AACjB,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC;AACvD,EAAC;AACD;AACA,MAAM,KAAK,GAAG,6BAA4B;AAC1C;AACA,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK;AAClD,EAAC;AACD;AACA,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,WAAW,KAAK;AACvE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC5B,EAAE,OAAO,IAAI,EAAE,EAAE;AACjB,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAC;AAC7C,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrH,CAAC;AACD;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK;AAC/B;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE;AAChC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACxC,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,EAAC;AACD;AACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA,MAAM,UAAU,GAAG,CAAC,KAAK;AACzB,EAAE,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvG;AACA,gBAAe;AACf,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,gBAAgB;AAClB,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,CAAC;;AC9sBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9D,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB;AACA,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;AAC/B,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC3B,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC7B,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACnC,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AACtC,EAAE,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACzC,CAAC;AACD;AACAA,OAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE;AAClC,EAAE,MAAM,EAAE,SAAS,MAAM,GAAG;AAC5B,IAAI,OAAO;AACX;AACA,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB;AACA,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB;AACA,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB;AACA,MAAM,MAAM,EAAEA,OAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI;AACjF,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,MAAMC,WAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AACvC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB;AACA;AACA,EAAE,sBAAsB;AACxB,EAAE,gBAAgB;AAClB,EAAE,cAAc;AAChB,EAAE,WAAW;AACb,EAAE,aAAa;AACf,EAAE,2BAA2B;AAC7B,EAAE,gBAAgB;AAClB,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB;AACA,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;AAClB,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AACH;AACA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACjD,MAAM,CAAC,cAAc,CAACA,WAAS,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE;AACA;AACA,UAAU,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK;AAC3E,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAACA,WAAS,CAAC,CAAC;AAC9C;AACA,EAAED,OAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,MAAM,CAAC,GAAG,EAAE;AAC7D,IAAI,OAAO,GAAG,KAAK,KAAK,CAAC,SAAS,CAAC;AACnC,GAAG,EAAE,IAAI,IAAI;AACb,IAAI,OAAO,IAAI,KAAK,cAAc,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC9E;AACA,EAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B;AACA,EAAE,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxD;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,CAAC;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAOA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACtD;AACA,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAClD,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA,MAAM,UAAU,GAAGA,OAAK,CAAC,YAAY,CAACA,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7E,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,KAAKE,4BAAgB,IAAI,QAAQ,GAAG,CAAC;AAC9D;AACA;AACA,EAAE,OAAO,GAAGF,OAAK,CAAC,YAAY,CAAC,OAAO,EAAE;AACxC,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,OAAO,EAAE,KAAK;AAClB,GAAG,EAAE,KAAK,EAAE,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AAC7C;AACA,IAAI,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;AACpD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC;AACpE,EAAE,MAAM,OAAO,GAAG,KAAK,IAAIA,OAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,IAAI,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACrC;AACA,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACnD,SAAS,CAACA,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/F,SAAS,EAAE;AACX;AACA,QAAQ,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7C,UAAU,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM;AACpE;AACA,YAAY,OAAO,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AACpG,YAAY,YAAY,CAAC,EAAE,CAAC;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAIA,OAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AAChD,MAAM,MAAM,MAAM,GAAG,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI;AAC5E,QAAQ,QAAQ,EAAE,EAAE,EAAEA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc;AAClF,OAAO,CAAC;AACR;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAM,CAAC,GAAG,EAAE;AACrB,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,MAAM;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACjD;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,KAAK,EAAE;AAC5C,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAEA,QAAM,CAAC,CAAC;AAC7C,GAAG,GAAGA,QAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AAC7C,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;;AClDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACxB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACxB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD;AACA,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;AACtD;AACA,EAAE,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;AACnD;AACA,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,GAAG,MAAM;AACT,IAAI,gBAAgB,GAAGH,OAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,MAAM,MAAM,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC;AACpE,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;AC1DA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AACxD,MAAM,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAC/C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,6BAAe,kBAAkB;;ACpEjC,6BAAe;AACf,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,KAAK;AAC5B,CAAC;;ACHD,wBAAeI,uBAAG,CAAC,eAAe;;ACAlC,mBAAe;AACf,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,OAAO,EAAE;AACX,IAAI,eAAe;AACnB,cAAIC,4BAAQ;AACZ,IAAI,IAAI,EAAE,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI;AACrD,GAAG;AACH,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAChD,CAAC;;ACXD,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG;AAC9B,EAAE,CAAC,OAAO,KAAK;AACf,IAAI,OAAO,aAAa,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACtF,GAAG,EAAE,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,MAAM;AAC9C,EAAE;AACF,IAAI,OAAO,iBAAiB,KAAK,WAAW;AAC5C;AACA,IAAI,IAAI,YAAY,iBAAiB;AACrC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC5C,IAAI;AACJ,CAAC,GAAG;;;;;;;;;ACrCJ,iBAAe;AACf,EAAE,GAAG,KAAK;AACV,EAAE,GAAGC,UAAQ;AACb;;ACAe,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxD,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;AAChF,IAAI,OAAO,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAIN,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACf;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AAC5D,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC1C;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACjE;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,OAAO,CAAC,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,YAAY,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB;AACA,IAAIA,OAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAClD,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,IAAI,IAAI;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM,OAAOA,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,QAAQ,GAAG;AACjB;AACA,EAAE,YAAY,EAAE,oBAAoB;AACpC;AACA,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B;AACA,EAAE,gBAAgB,EAAE,CAAC,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9D,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACvD,IAAI,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,IAAI,MAAM,eAAe,GAAGA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD;AACA,IAAI,IAAI,eAAe,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9E,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,MAAMA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,MAAMA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,MAAM;AACN,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC;AACzB,KAAK;AACL,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC;AACnB;AACA,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,QAAQ,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtE,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE;AACpG,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxD;AACA,QAAQ,OAAO,UAAU;AACzB,UAAU,UAAU,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI;AAC/C,UAAU,SAAS,IAAI,IAAI,SAAS,EAAE;AACtC,UAAU,IAAI,CAAC,cAAc;AAC7B,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,eAAe,IAAI,kBAAkB,GAAG;AAChD,MAAM,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,iBAAiB,EAAE,CAAC,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACvD,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AACpE,IAAI,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC7E,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;AACvD;AACA,IAAI,IAAI,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE;AACtG,MAAM,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACpE;AACA,MAAM,IAAI;AACV,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACxC,YAAY,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7F,WAAW;AACX,UAAU,MAAM,CAAC,CAAC;AAClB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,EAAE,cAAc,EAAE,cAAc;AAChC;AACA,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,GAAG,EAAE;AACP,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACvC,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC/B,GAAG;AACH;AACA,EAAE,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,MAAM,EAAE;AACZ,MAAM,QAAQ,EAAE,mCAAmC;AACnD,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7E,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AACH;AACA,mBAAe,QAAQ;;ACvJvB;AACA;AACA,MAAM,iBAAiB,GAAGA,OAAK,CAAC,WAAW,CAAC;AAC5C,EAAE,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM;AAClE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,qBAAqB;AACvE,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB;AACpE,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY;AACxC,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAe,UAAU,IAAI;AAC7B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACrE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AACzD,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,YAAY,EAAE;AAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACjE,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;ACjDD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AACD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC9E,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM,CAAC,IAAI,EAAE;AACtB,KAAK,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK;AAChE,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACrC,EAAE,MAAM,YAAY,GAAGA,OAAK,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;AAC9C,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,EAAE;AAC1D,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,OAAO;AACP,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AAClH,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ;AACzC,MAAMA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE;AAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,EAAC;AACxC,KAAK,MAAM,GAAGA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAChG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACtB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACjH,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,QAAQ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAClF,UAAU,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC5E,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,OAAO,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACvH,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,GAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC7B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;AAC7D,MAAM,SAAS,EAAE,EAAE;AACnB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAQ,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,YAAY,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;AACtH;AACA;AACAA,OAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK;AAClE,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,MAAM,KAAK;AACpB,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AACjC,KAAK;AACL,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAClC;AACA,uBAAe,YAAY;;ACnS3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,IAAIO,UAAQ,CAAC;AAClC,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC;AACrC,EAAE,MAAM,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B;AACA,EAAER,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACzBe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACjD;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1G,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAC9B,CAAC;AACD;AACAA,OAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE;AAC1C,EAAE,UAAU,EAAE,IAAI;AAClB,CAAC,CAAC;;AClBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC1D,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,IAAI,UAAU;AACzB,MAAM,kCAAkC,GAAG,QAAQ,CAAC,MAAM;AAC1D,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtG,MAAM,QAAQ,CAAC,MAAM;AACrB,MAAM,QAAQ,CAAC,OAAO;AACtB,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;AAC1D,EAAE,OAAO,WAAW;AACpB,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3E,MAAM,OAAO,CAAC;AACd;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,EAAE,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;AAC/C,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB;;ACpBO,MAAM,OAAO,GAAG,OAAO;;ACEf,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC;;ACCA,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,EAAE,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACjE,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,EAAE;AACrC,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,KAAK,MAAM,EAAE;AAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACjE;AACA,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AACvF;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,GAAG,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AACvF;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAChC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB,EAAE,OAAO,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,EAAE;AAC9C,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO;AACP,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAC/B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAQ,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,OAAO,EAAE,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,GAAG,CAAC;AACJ;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;AACxC,EAAE,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,SAAS,IAAI,CAAC,WAAW,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;AACvB,MAAM,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACrC;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;AAChD;AACA,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;AACvE,GAAG,CAAC;AACJ;;AC7CA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,MAAM,oBAAoB,SAASS,0BAAM,CAAC,SAAS;AACnD,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,GAAGT,OAAK,CAAC,YAAY,CAAC,OAAO,EAAE;AAC1C,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,SAAS,EAAE,EAAE,GAAG,IAAI;AAC1B,MAAM,YAAY,EAAE,GAAG;AACvB,MAAM,UAAU,EAAE,GAAG;AACrB,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,YAAY,EAAE,EAAE;AACtB,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;AAC/B,MAAM,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC;AACV,MAAM,qBAAqB,EAAE,OAAO,CAAC,SAAS;AAC9C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;AACzC,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM;AAC5B,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,mBAAmB,EAAE,CAAC;AAC5B,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;AACpB,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK,CAAC;AACN;AACA,IAAI,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;AACvG;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI;AACpC,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;AAChC,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACnC,UAAU,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;AACtC,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B;AACA,IAAI,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,SAAS,gBAAgB,GAAG;AACpE,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC7D,MAAM,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO;AACnD;AACA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC/C;AACA,MAAM,aAAa,GAAG,gBAAgB,CAAC;AACvC;AACA,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,UAAU,QAAQ,EAAE,gBAAgB;AACpC,UAAU,OAAO,EAAE,UAAU;AAC7B,UAAU,UAAU,EAAE,UAAU,IAAI,gBAAgB,GAAG,UAAU,IAAI,SAAS;AAC9E,UAAU,OAAO,EAAE,aAAa;AAChC,UAAU,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACzC,UAAU,WAAW,EAAE,IAAI,IAAI,UAAU,IAAI,gBAAgB,IAAI,UAAU;AAC3E,YAAY,CAAC,UAAU,GAAG,gBAAgB,IAAI,IAAI,GAAG,SAAS;AAC9D,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5B;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE;AAClC,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AACtC;AACA,IAAI,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC7D;AACA,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AACtC,IAAI,MAAM,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACxH;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE;AAC1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC;AACnC,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC;AAC/B;AACA,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE;AAChC,QAAQ,SAAS,CAAC,cAAc,EAAE,CAAC;AACnC,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,cAAc,GAAG,MAAM;AACzC,UAAU,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AAC1C,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;AAClD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;AAChC,MAAM,IAAI,YAAY,GAAG,qBAAqB,CAAC;AAC/C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AACrB;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,UAAU,EAAE;AAC5E,UAAU,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B,UAAU,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACvD,UAAU,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3D,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS;AACT;AACA,QAAQ,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACrD,OAAO;AACP;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,IAAI,SAAS,IAAI,CAAC,EAAE;AAC5B;AACA,UAAU,OAAO,UAAU,CAAC,MAAM;AAClC,YAAY,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,IAAI,SAAS,GAAG,YAAY,EAAE;AACtC,UAAU,YAAY,GAAG,SAAS,CAAC;AACnC,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,YAAY,IAAI,SAAS,GAAG,YAAY,IAAI,CAAC,SAAS,GAAG,YAAY,IAAI,YAAY,EAAE;AACjG,QAAQ,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACvD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAClD,OAAO;AACP;AACA,MAAM,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,OAAO,GAAG,SAAS,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;AACnE,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACnD,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,+BAAe,oBAAoB;;AC9LnC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;AAC/B;AACA,MAAM,QAAQ,GAAG,iBAAiB,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,MAAM,GAAE;AACxB,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/B,IAAI,MAAM,MAAM,IAAI,CAAC,WAAW,GAAE;AAClC,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AAClC,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACjC,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,CAAC;AACf,GAAG;AACH,EAAC;AACD;AACA,mBAAe,QAAQ;;ACTvB,MAAM,iBAAiB,GAAGA,OAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5D;AACA,MAAM,WAAW,GAAG,IAAIU,gBAAW,EAAE,CAAC;AACtC;AACA,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,IAAI,MAAM,aAAa,GAAGV,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,OAAO,GAAG,CAAC,sCAAsC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClF,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd;AACA,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9E,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,0BAA0B,CAAC,EAAE,IAAI,CAAC,EAAC;AACnF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACtD;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AACvE;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;AAChF;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,EAAE;AACjB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC;AACvB;AACA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzB;AACA,IAAI,GAAGA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAClC,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK,MAAM;AACX,MAAM,OAAOW,UAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,MAAM,UAAU,CAAC;AACrB,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE;AAC1B,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,MAAM;AAC1D,QAAQ,IAAI,GAAG,KAAK;AACpB,QAAQ,IAAI,GAAG,KAAK;AACpB,QAAQ,GAAG,GAAG,KAAK;AACnB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG;AACH,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,KAAK;AAC5D,EAAE,MAAM;AACR,IAAI,GAAG,GAAG,oBAAoB;AAC9B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAGX,OAAK,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC;AACxE,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AACpB;AACA,EAAE,GAAG,CAACA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACnD,IAAI,MAAM,KAAK,CAAC,wCAAwC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AACnE,EAAE,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAC/E,EAAE,IAAI,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;AAC7C;AACA,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK;AAClE,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,aAAa,IAAI,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3D;AACA,EAAE,aAAa,GAAGA,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACtD;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,cAAc,EAAE,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtC,IAAI,eAAe,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;AACtD,GAAG;AACH;AACA,EAAE,cAAc,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;AACpD;AACA,EAAE,OAAOY,eAAQ,CAAC,IAAI,CAAC,CAAC,mBAAmB;AAC3C,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE;AAC7B,MAAM,MAAM,aAAa,CAAC;AAC1B,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,MAAM,WAAW,CAAC;AACtB,GAAG,GAAG,CAAC,CAAC;AACR,CAAC,CAAC;AACF;AACA,2BAAe,gBAAgB;;AC1G/B,MAAM,yBAAyB,SAASH,0BAAM,CAAC,SAAS,CAAC;AACzD,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,QAAQ,EAAE,CAAC;AACf,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC;AACA;AACA,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC5B,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD;AACA,oCAAe,yBAAyB;;ACzBxC,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK;AACrC,EAAE,OAAOT,OAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE;AAClD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI;AACV,QAAQ,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChE,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,OAAO;AACP,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,GAAG,GAAG,EAAE,CAAC;AACT,EAAC;AACD;AACA,sBAAe,WAAW;;ACY1B,MAAM,WAAW,GAAG;AACpB,EAAE,KAAK,EAAEa,wBAAI,CAAC,SAAS,CAAC,YAAY;AACpC,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,YAAY;AAC1C,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,KAAK,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AAC9C,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AACpD,EAAC;AACD;AACA,MAAM,iBAAiB,GAAGb,OAAK,CAAC,UAAU,CAACa,wBAAI,CAAC,sBAAsB,CAAC,CAAC;AACxE;AACA,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,GAAGC,mCAAe,CAAC;AAC/D;AACA,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B;AACA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI;AAC9D,EAAE,OAAO,QAAQ,GAAG,GAAG,CAAC;AACxB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE;AAC1D,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC7D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;AAClD,EAAE,IAAI,KAAK,GAAG,WAAW,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAGC,2BAAc,CAAC,QAAQ,CAAC,CAAC;AAC9C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,EAAE;AACb;AACA,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzE,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AACpB;AACA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtD,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACrF,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,MAAM;AAC3B,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACjC,SAAS,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AACjE,KAAK;AACL;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACvF,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;AACnD,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACjC;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;AAC7B,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,SAAS,cAAc,CAAC,eAAe,EAAE;AAC3E;AACA;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACjE,GAAG,CAAC;AACJ,CAAC;AACD;AACA,MAAM,sBAAsB,GAAG,OAAO,OAAO,KAAK,WAAW,IAAIf,OAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AACrG;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,aAAa,KAAK;AACrC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,MAAM,CAAC;AACf;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AACxC,MAAM,IAAI,MAAM,EAAE,OAAO;AACzB,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1C,MAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK;AAChC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzB,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;AACrB,MAAK;AACL;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,aAAa,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjG,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK;AAC7C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChC,IAAI,MAAM,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,QAAQ;AACV,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,GAAG,EAAE;AACL,EAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACpH;AACA;AACA,oBAAe,sBAAsB,IAAI,SAAS,WAAW,CAAC,MAAM,EAAE;AACtE,EAAE,OAAO,SAAS,CAAC,eAAe,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/E,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AACxC,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,OAAO,GAAGgB,aAAW,CAAC,MAAM,EAAE,CAAC,KAAK,KAAKhB,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7F;AACA,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK;AACtC,QAAQ,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK;AACpD,UAAU,IAAI,GAAG,EAAE;AACnB,YAAY,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,WAAW;AACX;AACA,UAAU,MAAM,SAAS,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9H;AACA,UAAU,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5F,SAAS,CAAC,CAAC;AACX,QAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,OAAO,GAAG,IAAIiB,mBAAY,EAAE,CAAC;AACvC;AACA,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9C,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1D,OAAO;AACP;AACA,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACnC,MAAK;AACL;AACA,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,SAAS,KAAK,CAAC,MAAM,EAAE;AAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACpG,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;AAC7C,MAAM,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC9D;AACA,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC9B,MAAM,IAAI,aAAa,CAAC;AACxB;AACA,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;AAC5B,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACvC,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,UAAU,EAAE,oBAAoB;AAC1C,UAAU,OAAO,EAAE,EAAE;AACrB,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,IAAI;AACV,QAAQ,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,EAAE;AACzE,UAAU,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI;AAC7C,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACvE,OAAO;AACP;AACA,MAAM,IAAI,YAAY,KAAK,MAAM,EAAE;AACnC,QAAQ,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACjE;AACA,QAAQ,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AAC9D,UAAU,aAAa,GAAGjB,OAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxD,SAAS;AACT,OAAO,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC5C,QAAQ,aAAa,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,OAAO;AACP;AACA,MAAM,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACrC,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,MAAM,EAAE,GAAG;AACnB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,OAAO,EAAE,IAAID,cAAY,EAAE;AACnC,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACrD,MAAM,OAAO,MAAM,CAAC,IAAI,UAAU;AAClC,QAAQ,uBAAuB,GAAG,QAAQ;AAC1C,QAAQ,UAAU,CAAC,eAAe;AAClC,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAClE;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,IAAI,aAAa,GAAG,SAAS,CAAC;AAClC,IAAI,IAAI,eAAe,GAAG,SAAS,CAAC;AACpC;AACA;AACA,IAAI,IAAIR,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;AACjF;AACA,MAAM,IAAI,GAAGkB,kBAAgB,CAAC,IAAI,EAAE,CAAC,WAAW,KAAK;AACrD,QAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,OAAO,EAAE;AACT,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;AACxC,QAAQ,QAAQ,EAAE,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS;AAC9D,OAAO,CAAC,CAAC;AACT;AACA,KAAK,MAAM,IAAIlB,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC5E,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrC;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;AACvC,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,GAAG,MAAMmB,wBAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,UAAU,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACpG;AACA,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAInB,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC,CAAC;AACnF,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC/C,MAAM,IAAI,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAACE,UAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,KAAK,MAAM,IAAI,IAAI,IAAI,CAACX,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9C,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAE1B,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5C,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,OAAO,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,OAAO,MAAM,CAAC,IAAI,UAAU;AACpC,UAAU,mFAAmF;AAC7F,UAAU,UAAU,CAAC,eAAe;AACpC,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;AAC3E,QAAQ,OAAO,MAAM,CAAC,IAAI,UAAU;AACpC,UAAU,8CAA8C;AACxD,UAAU,UAAU,CAAC,eAAe;AACpC,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,aAAa,GAAGA,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC3E;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAChC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,gBAAgB,IAAI,aAAa,CAAC,EAAE;AACrD,MAAM,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,QAAQ,IAAI,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,OAAO;AACP;AACA,MAAM,IAAI,GAAGA,0BAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAIW,sBAAoB,CAAC;AAC7D,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,OAAO,EAAEpB,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC;AACpD,OAAO,CAAC,CAAC,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC;AACvB;AACA,MAAM,gBAAgB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,IAAI;AAC1D,QAAQ,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjD,UAAU,MAAM,EAAE,IAAI;AACtB,SAAS,CAAC,CAAC,CAAC;AACZ,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC;AACzB,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,IAAI,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;AAC7C,KAAK;AACL;AACA,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC5C;AACA,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI;AACR,MAAM,IAAI,GAAG,QAAQ;AACrB,QAAQ,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,MAAM;AACrB,QAAQ,MAAM,CAAC,gBAAgB;AAC/B,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3B,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/C,MAAM,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,MAAM,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACjC,MAAM,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9B,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,iBAAiB;AACvB,MAAM,yBAAyB,IAAI,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAC1E,OAAO,CAAC;AACR;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,IAAI;AACV,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE;AAC/B,MAAM,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;AAClE,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,cAAc,EAAE,sBAAsB;AAC5C,MAAM,eAAe,EAAE,EAAE;AACzB,KAAK,CAAC;AACN;AACA;AACA,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,MAAM,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzC,MAAM,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACjI,KAAK;AACL;AACA,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1E,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC,KAAK,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;AAC1C,MAAM,SAAS,GAAG,cAAc,GAAGqB,yBAAK,GAAGC,wBAAI,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B,QAAQ,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACjC,QAAQ,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/D,OAAO;AACP,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAC5D,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE;AACnC,MAAM,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACnD,KAAK,MAAM;AACX;AACA,MAAM,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE;AACnC,MAAM,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC7D,KAAK;AACL;AACA;AACA,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,cAAc,CAAC,GAAG,EAAE;AAClE,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AAChC;AACA,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5D;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,MAAM,eAAe,GAAG,IAAIF,sBAAoB,CAAC;AACzD,UAAU,MAAM,EAAEpB,OAAK,CAAC,cAAc,CAAC,cAAc,CAAC;AACtD,UAAU,OAAO,EAAEA,OAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AACxD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,kBAAkB,IAAI,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,IAAI;AACzE,UAAU,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACrD,YAAY,QAAQ,EAAE,IAAI;AAC1B,WAAW,CAAC,CAAC,CAAC;AACd,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,OAAO;AACP;AACA;AACA,MAAM,IAAI,cAAc,GAAG,GAAG,CAAC;AAC/B;AACA;AACA,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AACzC;AACA;AACA,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC1E;AACA;AACA,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AACzD,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE;AACrE;AACA,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,QAAQ,CAAC;AACtB,QAAQ,KAAK,UAAU,CAAC;AACxB,QAAQ,KAAK,YAAY;AACzB;AACA,UAAU,OAAO,CAAC,IAAI,CAACa,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD;AACA;AACA,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,UAAU,MAAM;AAChB,QAAQ,KAAK,SAAS;AACtB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAIU,2BAAyB,EAAE,CAAC,CAAC;AACxD;AACA;AACA,UAAU,OAAO,CAAC,IAAI,CAACV,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD;AACA;AACA,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,iBAAiB,EAAE;AACjC,YAAY,OAAO,CAAC,IAAI,CAACA,wBAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;AACrE,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACnD,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAGJ,0BAAM,CAAC,QAAQ,CAAC,OAAO,EAAET,OAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9F;AACA,MAAM,MAAM,YAAY,GAAGS,0BAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM;AACjE,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,MAAM,QAAQ,GAAG;AACvB,QAAQ,MAAM,EAAE,GAAG,CAAC,UAAU;AAC9B,QAAQ,UAAU,EAAE,GAAG,CAAC,aAAa;AACrC,QAAQ,OAAO,EAAE,IAAID,cAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM;AACd,QAAQ,OAAO,EAAE,WAAW;AAC5B,OAAO,CAAC;AACR;AACA,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;AACrC,QAAQ,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;AACvC,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,kBAAkB,GAAG,CAAC,CAAC;AACnC;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACnE,UAAU,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,UAAU,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC;AAC7C;AACA;AACA,UAAU,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,EAAE;AAC5F;AACA,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,YAAY,cAAc,CAAC,OAAO,EAAE,CAAC;AACrC,YAAY,MAAM,CAAC,IAAI,UAAU,CAAC,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AACrG,cAAc,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjE,WAAW;AACX,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,oBAAoB,GAAG;AACrE,UAAU,IAAI,QAAQ,EAAE;AACxB,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,MAAM,GAAG,GAAG,IAAI,UAAU;AACpC,YAAY,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AAC/E,YAAY,UAAU,CAAC,gBAAgB;AACvC,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,WAAW,CAAC;AACZ,UAAU,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtC,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACnE,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AACpC,UAAU,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,eAAe,GAAG;AAC5D,UAAU,IAAI;AACd,YAAY,IAAI,YAAY,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/G,YAAY,IAAI,YAAY,KAAK,aAAa,EAAE;AAChD,cAAc,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACrE,cAAc,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AACpE,gBAAgB,YAAY,GAAGR,OAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5D,eAAe;AACf,aAAa;AACb,YAAY,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;AACzC,WAAW,CAAC,OAAO,GAAG,EAAE;AACxB,YAAY,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1F,WAAW;AACX,UAAU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AACvC,UAAU,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC5C,UAAU,cAAc,CAAC,OAAO,EAAE,CAAC;AACnC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AACjC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACrD;AACA;AACA,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC1D;AACA,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC3C,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB;AACA,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,UAAU;AAC7B,UAAU,+CAA+C;AACzD,UAAU,UAAU,CAAC,oBAAoB;AACzC,UAAU,MAAM;AAChB,UAAU,GAAG;AACb,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,oBAAoB,GAAG;AAC9D,QAAQ,IAAI,MAAM,EAAE,OAAO;AAC3B,QAAQ,IAAI,mBAAmB,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC;AACvH,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACzE,QAAQ,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACxC,UAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,UAAU;AAC7B,UAAU,mBAAmB;AAC7B,UAAU,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY;AAC3F,UAAU,MAAM;AAChB,UAAU,GAAG;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,EAAE,CAAC;AAChB,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC;AACxB,MAAM,IAAI,OAAO,GAAG,KAAK,CAAC;AAC1B;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC3B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AAChC,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AAChC,UAAU,KAAK,CAAC,IAAI,aAAa,CAAC,iCAAiC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,KAAK;AACL,GAAG,CAAC,CAAC;AACL;;ACvqBA,gBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA;AACA,EAAE;AACF,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACtD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3F;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC1D;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;AAChE;AACA,MAAM,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,MAAM,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AACzF,MAAM,QAAQ,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AAC3D,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,IAAI,GAAG;AACX,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,GAAG,EAAE;AACf,GAAG;;ACnCH,wBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA;AACA;AACA,EAAE,CAAC,SAAS,kBAAkB,GAAG;AACjC,IAAI,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC7D,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,IAAI,SAAS,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,GAAG,EAAE;AAC7B,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC;AACrB;AACA,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,OAAO;AACP;AACA,MAAM,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChD;AACA;AACA,MAAM,OAAO;AACb,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,QAAQ,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE;AAC1F,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;AACrF,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE;AAC9E,QAAQ,QAAQ,EAAE,cAAc,CAAC,QAAQ;AACzC,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,QAAQ,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5D,UAAU,cAAc,CAAC,QAAQ;AACjC,UAAU,GAAG,GAAG,cAAc,CAAC,QAAQ;AACvC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,SAAS,eAAe,CAAC,UAAU,EAAE;AAChD,MAAM,MAAM,MAAM,GAAG,CAACA,OAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACxF,MAAM,QAAQ,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;AACpD,UAAU,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAC1C,KAAK,CAAC;AACN,GAAG,GAAG;AACN;AACA;AACA,EAAE,CAAC,SAAS,qBAAqB,GAAG;AACpC,IAAI,OAAO,SAAS,eAAe,GAAG;AACtC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,GAAG,GAAG;;AClDN,SAAS,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE;AAC1D,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,OAAO,CAAC,IAAI;AACd,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,IAAI,aAAa,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,KAAK,IAAI,MAAM,GAAG,KAAK,IAAI,SAAS;AACpD,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACnC,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,GAAG,SAAS;AAC/E,MAAM,KAAK,EAAE,CAAC;AACd,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC1D;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD;AACA,MAAM,qBAAqB,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC;AACpE;AACA,mBAAe,qBAAqB,IAAI,UAAU,MAAM,EAAE;AAC1D,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AAClE,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAClC,IAAI,MAAM,cAAc,GAAGQ,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AACzE,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;AAC/C,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,SAAS,IAAI,GAAG;AACpB,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC;AACpB;AACA,IAAI,IAAIR,OAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,8BAA8B,EAAE;AACrF,QAAQ,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,KAAK,EAAE;AAC5E;AACA,QAAQ,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACvH,QAAQ,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,IAAI,qBAAqB,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACvC;AACA;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACtG,MAAM,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AACtF,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;AAChH;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC;AACA,IAAI,SAAS,SAAS,GAAG;AACzB,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,eAAe,GAAGQ,cAAY,CAAC,IAAI;AAC/C,QAAQ,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC7E,OAAO,CAAC;AACR,MAAM,MAAM,YAAY,GAAG,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;AAC9F,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG;AACvB,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,OAAO,EAAE,eAAe;AAChC,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,OAAO,CAAC;AACR;AACA,MAAM,MAAM,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE;AAC/B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnB;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK;AACL;AACA,IAAI,IAAI,WAAW,IAAI,OAAO,EAAE;AAChC;AACA,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACpC,KAAK,MAAM;AACX;AACA,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,UAAU,GAAG;AACzD,QAAQ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;AAClD,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1G,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA,QAAQ,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC;AACR,KAAK;AACL;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC7C,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC7C;AACA;AACA,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,aAAa,GAAG;AACjD,MAAM,IAAI,mBAAmB,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC;AACrH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACvE,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACtC,QAAQ,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzD,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,UAAU;AAC3B,QAAQ,mBAAmB;AAC3B,QAAQ,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY;AACzF,QAAQ,MAAM;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AACvC,MAAM,aAAa,IAAIR,OAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG;AACA,MAAM,IAAI,aAAa,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnF;AACA,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChH;AACA,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC/D,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrE;AACA;AACA,IAAI,IAAI,kBAAkB,IAAI,OAAO,EAAE;AACvC,MAAMA,OAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACjF,QAAQ,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;AACpD,MAAM,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;AACzD,KAAK;AACL;AACA;AACA,IAAI,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;AACjD,MAAM,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,UAAU,EAAE;AACzD,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;AAClG,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE;AACzE,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjG,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;AAC7C;AACA;AACA,MAAM,UAAU,GAAG,MAAM,IAAI;AAC7B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AAC3F,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;AACxB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA,MAAM,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACrE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnG,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACjE,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,uBAAuB,GAAG,QAAQ,GAAG,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3G,MAAM,OAAO;AACb,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AACtC,GAAG,CAAC,CAAC;AACL;;AC9PA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAC;AACD;AACAA,OAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAKA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACzG;AACA,iBAAe;AACf,EAAE,UAAU,EAAE,CAAC,QAAQ,KAAK;AAC5B,IAAI,QAAQ,GAAGA,OAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,eAAe,GAAG,EAAE,CAAC;AAC/B;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,IAAI,EAAE,CAAC;AACb;AACA,MAAM,OAAO,GAAG,aAAa,CAAC;AAC9B;AACA,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;AAC5C,QAAQ,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5E;AACA,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,UAAU,MAAM,IAAI,UAAU,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM;AACd,OAAO;AACP;AACA,MAAM,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;AACrD,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,WAAW,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACrG,SAAS,CAAC;AACV;AACA,MAAM,IAAI,CAAC,GAAG,MAAM;AACpB,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjH,QAAQ,yBAAyB,CAAC;AAClC;AACA,MAAM,MAAM,IAAI,UAAU;AAC1B,QAAQ,CAAC,qDAAqD,CAAC,GAAG,CAAC;AACnE,QAAQ,iBAAiB;AACzB,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,QAAQ,EAAE,aAAa;AACzB;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,MAAM,EAAE;AAChD,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,MAAM,CAAC,OAAO,GAAGQ,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAClC,IAAI,MAAM;AACV,IAAI,MAAM,CAAC,gBAAgB;AAC3B,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAID,UAAQ,CAAC,OAAO,CAAC,CAAC;AAC1E;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AACrE,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACzC;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACtC,MAAM,MAAM;AACZ,MAAM,MAAM,CAAC,iBAAiB;AAC9B,MAAM,QAAQ;AACd,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3D;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA;AACA,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACjD,UAAU,MAAM;AAChB,UAAU,MAAM,CAAC,iBAAiB;AAClC,UAAU,MAAM,CAAC,QAAQ;AACzB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7E,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,GAAG,CAAC,CAAC;AACL;;AC3EA,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,KAAK,YAAYA,cAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpD,IAAI,IAAIR,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpE,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1D,KAAK,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA;AACA,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC/C,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpD,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,iBAAiB,EAAE,gBAAgB;AACvC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,eAAe,EAAE,gBAAgB;AACrC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,YAAY,EAAE,gBAAgB;AAClC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,kBAAkB,EAAE,gBAAgB;AACxC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,cAAc,EAAE,eAAe;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxF,GAAG,CAAC;AACJ;AACA,EAAEA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACpG,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC;AACxD,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,eAAe,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AAClG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;;ACpGA,MAAMwB,YAAU,GAAG,EAAE,CAAC;AACtB;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACrF,EAAEA,YAAU,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7E,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACpC,IAAI,OAAO,UAAU,GAAG,OAAO,GAAG,0BAA0B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnH,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,MAAM,IAAI,UAAU;AAC1B,QAAQ,aAAa,CAAC,GAAG,EAAE,mBAAmB,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,UAAU,CAAC,cAAc;AACjC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC7C,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,aAAa;AACrB,UAAU,GAAG;AACb,UAAU,8BAA8B,GAAG,OAAO,GAAG,yCAAyC;AAC9F,SAAS;AACT,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,MAAM,IAAI,UAAU,CAAC,2BAA2B,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACtG,OAAO;AACP,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,MAAM,MAAM,IAAI,UAAU,CAAC,iBAAiB,GAAG,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,kBAAe;AACf,EAAE,aAAa;AACf,cAAEA,YAAU;AACZ,CAAC;;AC/ED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,CAAC;AACZ,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AACnC,IAAI,IAAI,CAAC,YAAY,GAAG;AACxB,MAAM,OAAO,EAAE,IAAIC,oBAAkB,EAAE;AACvC,MAAM,QAAQ,EAAE,IAAIA,oBAAkB,EAAE;AACxC,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC;AAClB;AACA,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC9F;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1E;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AACxB,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B;AACA,SAAS,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;AACzF,UAAU,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,MAAK;AACnC,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;AAChC;AACA;AACA,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACzC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;AAC7D;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,MAAM,SAAS,CAAC,aAAa,CAAC,YAAY,EAAE;AAC5C,QAAQ,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtE,QAAQ,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtE,QAAQ,mBAAmB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,OAAO,EAAE,KAAK,CAAC,CAAC;AAChB,KAAK;AACL;AACA,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAClC,MAAM,IAAIzB,OAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,SAAS,EAAE,gBAAgB;AACrC,UAAS;AACT,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,aAAa,CAAC,gBAAgB,EAAE;AAClD,UAAU,MAAM,EAAE,UAAU,CAAC,QAAQ;AACrC,UAAU,SAAS,EAAE,UAAU,CAAC,QAAQ;AACxC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;AACnF;AACA;AACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAIA,OAAK,CAAC,KAAK;AAC/C,MAAM,OAAO,CAAC,MAAM;AACpB,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,OAAO,IAAIA,OAAK,CAAC,OAAO;AAC5B,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AACjE,MAAM,CAAC,MAAM,KAAK;AAClB,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,OAAO,GAAGQ,cAAY,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClE;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,8BAA8B,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACvF,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,8BAA8B,GAAG,8BAA8B,IAAI,WAAW,CAAC,WAAW,CAAC;AACjG;AACA,MAAM,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACtF,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;AACxD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,OAAO,CAAC,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC1C;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD;AACA;AACAR,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACzF;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE,MAAM,EAAE;AAClD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAClD,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI;AAC/B,KAAK,CAAC,CAAC,CAAC;AACR,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC/E;AACA;AACA,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AACpD,QAAQ,MAAM;AACd,QAAQ,OAAO,EAAE,MAAM,GAAG;AAC1B,UAAU,cAAc,EAAE,qBAAqB;AAC/C,SAAS,GAAG,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC,CAAC;AACV,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;AACjD;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AACH;AACA,gBAAe,KAAK;;AC5NpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE;AACjE,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;AACpC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,IAAI;AACvC,MAAM,IAAI,QAAQ,CAAC;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI;AAC7C,QAAQ,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AACzC,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACxB;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,KAAK,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,sBAAe,WAAW;;ACtH1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,QAAQ,EAAE;AACzC,EAAE,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,YAAY,CAAC,OAAO,EAAE;AAC9C,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AACpE;;ACbA,MAAM,cAAc,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,0BAA0B,EAAE,GAAG;AACjC,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,uBAAuB,EAAE,GAAG;AAC9B,EAAE,qBAAqB,EAAE,GAAG;AAC5B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,6BAA6B,EAAE,GAAG;AACpC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA,yBAAe,cAAc;;AClD7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,aAAa,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,IAAI0B,OAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,MAAM,QAAQ,GAAG,IAAI,CAACA,OAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D;AACA;AACA,EAAE1B,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE0B,OAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE;AACA;AACA,EAAE1B,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5D;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,cAAc,EAAE;AACpD,IAAI,OAAO,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;AACA;AACK,MAAC,KAAK,GAAG,cAAc,CAACO,UAAQ,EAAE;AACvC;AACA;AACA,KAAK,CAAC,KAAK,GAAGmB,OAAK,CAAC;AACpB;AACA;AACA,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,KAAK,CAAC,WAAW,GAAGC,aAAW,CAAC;AAChC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACnC;AACA;AACA,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA;AACA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAClC;AACA;AACA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAChC;AACA,KAAK,CAAC,YAAY,GAAGnB,cAAY,CAAC;AAClC;AACA,KAAK,CAAC,UAAU,GAAG,KAAK,IAAI,cAAc,CAACR,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAClG;AACA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACvC;AACA,KAAK,CAAC,cAAc,GAAG4B,gBAAc,CAAC;AACtC;AACA,KAAK,CAAC,OAAO,GAAG,KAAK;;;;"} \ No newline at end of file diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts deleted file mode 100644 index d95e6ef..0000000 --- a/node_modules/axios/index.d.cts +++ /dev/null @@ -1,542 +0,0 @@ -interface RawAxiosHeaders { - [key: string]: axios.AxiosHeaderValue; -} - -type MethodsHeaders = Partial<{ - [Key in axios.Method as Lowercase]: AxiosHeaders; -} & {common: AxiosHeaders}>; - -type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean; - -type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; - -type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent'| 'Content-Encoding' | 'Authorization'; - -type ContentType = axios.AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; - -type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; - -declare class AxiosHeaders { - constructor( - headers?: RawAxiosHeaders | AxiosHeaders | string - ); - - [key: string]: any; - - set(headerName?: string, value?: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; - - get(headerName: string, parser: RegExp): RegExpExecArray | null; - get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue; - - has(header: string, matcher?: AxiosHeaderMatcher): boolean; - - delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; - - clear(matcher?: AxiosHeaderMatcher): boolean; - - normalize(format: boolean): AxiosHeaders; - - concat(...targets: Array): AxiosHeaders; - - toJSON(asStrings?: boolean): RawAxiosHeaders; - - static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; - - static accessor(header: string | string[]): AxiosHeaders; - - static concat(...targets: Array): AxiosHeaders; - - setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentType(parser?: RegExp): RegExpExecArray | null; - getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentType(matcher?: AxiosHeaderMatcher): boolean; - - setContentLength(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentLength(parser?: RegExp): RegExpExecArray | null; - getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentLength(matcher?: AxiosHeaderMatcher): boolean; - - setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAccept(parser?: RegExp): RegExpExecArray | null; - getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasAccept(matcher?: AxiosHeaderMatcher): boolean; - - setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getUserAgent(parser?: RegExp): RegExpExecArray | null; - getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; - - setContentEncoding(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentEncoding(parser?: RegExp): RegExpExecArray | null; - getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; - - setAuthorization(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAuthorization(parser?: RegExp): RegExpExecArray | null; - getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; - - [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>; -} - -declare class AxiosError extends Error { - constructor( - message?: string, - code?: string, - config?: axios.InternalAxiosRequestConfig, - request?: any, - response?: axios.AxiosResponse - ); - - config?: axios.InternalAxiosRequestConfig; - code?: string; - request?: any; - response?: axios.AxiosResponse; - isAxiosError: boolean; - status?: number; - toJSON: () => object; - cause?: Error; - static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; - static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; - static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; - static readonly ERR_NETWORK = "ERR_NETWORK"; - static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; - static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; - static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; - static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; - static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; - static readonly ERR_CANCELED = "ERR_CANCELED"; - static readonly ECONNABORTED = "ECONNABORTED"; - static readonly ETIMEDOUT = "ETIMEDOUT"; -} - -declare class CanceledError extends AxiosError { -} - -declare class Axios { - constructor(config?: axios.AxiosRequestConfig); - defaults: axios.AxiosDefaults; - interceptors: { - request: axios.AxiosInterceptorManager; - response: axios.AxiosInterceptorManager; - }; - getUri(config?: axios.AxiosRequestConfig): string; - request, D = any>(config: axios.AxiosRequestConfig): Promise; - get, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - delete, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - head, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - options, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - post, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - put, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - patch, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - postForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - putForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - patchForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; -} - -declare enum HttpStatusCode { - Continue = 100, - SwitchingProtocols = 101, - Processing = 102, - EarlyHints = 103, - Ok = 200, - Created = 201, - Accepted = 202, - NonAuthoritativeInformation = 203, - NoContent = 204, - ResetContent = 205, - PartialContent = 206, - MultiStatus = 207, - AlreadyReported = 208, - ImUsed = 226, - MultipleChoices = 300, - MovedPermanently = 301, - Found = 302, - SeeOther = 303, - NotModified = 304, - UseProxy = 305, - Unused = 306, - TemporaryRedirect = 307, - PermanentRedirect = 308, - BadRequest = 400, - Unauthorized = 401, - PaymentRequired = 402, - Forbidden = 403, - NotFound = 404, - MethodNotAllowed = 405, - NotAcceptable = 406, - ProxyAuthenticationRequired = 407, - RequestTimeout = 408, - Conflict = 409, - Gone = 410, - LengthRequired = 411, - PreconditionFailed = 412, - PayloadTooLarge = 413, - UriTooLong = 414, - UnsupportedMediaType = 415, - RangeNotSatisfiable = 416, - ExpectationFailed = 417, - ImATeapot = 418, - MisdirectedRequest = 421, - UnprocessableEntity = 422, - Locked = 423, - FailedDependency = 424, - TooEarly = 425, - UpgradeRequired = 426, - PreconditionRequired = 428, - TooManyRequests = 429, - RequestHeaderFieldsTooLarge = 431, - UnavailableForLegalReasons = 451, - InternalServerError = 500, - NotImplemented = 501, - BadGateway = 502, - ServiceUnavailable = 503, - GatewayTimeout = 504, - HttpVersionNotSupported = 505, - VariantAlsoNegotiates = 506, - InsufficientStorage = 507, - LoopDetected = 508, - NotExtended = 510, - NetworkAuthenticationRequired = 511, -} - -type InternalAxiosError = AxiosError; - -declare namespace axios { - type AxiosError = InternalAxiosError; - - type RawAxiosRequestHeaders = Partial; - - type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - - type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; - - type RawCommonResponseHeaders = { - [Key in CommonResponseHeadersList]: AxiosHeaderValue; - } & { - "set-cookie": string[]; - }; - - type RawAxiosResponseHeaders = Partial; - - type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; - - interface AxiosRequestTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; - } - - interface AxiosResponseTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; - } - - interface AxiosAdapter { - (config: InternalAxiosRequestConfig): AxiosPromise; - } - - interface AxiosBasicCredentials { - username: string; - password: string; - } - - interface AxiosProxyConfig { - host: string; - port: number; - auth?: AxiosBasicCredentials; - protocol?: string; - } - - type Method = - | 'get' | 'GET' - | 'delete' | 'DELETE' - | 'head' | 'HEAD' - | 'options' | 'OPTIONS' - | 'post' | 'POST' - | 'put' | 'PUT' - | 'patch' | 'PATCH' - | 'purge' | 'PURGE' - | 'link' | 'LINK' - | 'unlink' | 'UNLINK'; - - type ResponseType = - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream'; - - type responseEncoding = - | 'ascii' | 'ASCII' - | 'ansi' | 'ANSI' - | 'binary' | 'BINARY' - | 'base64' | 'BASE64' - | 'base64url' | 'BASE64URL' - | 'hex' | 'HEX' - | 'latin1' | 'LATIN1' - | 'ucs-2' | 'UCS-2' - | 'ucs2' | 'UCS2' - | 'utf-8' | 'UTF-8' - | 'utf8' | 'UTF8' - | 'utf16le' | 'UTF16LE'; - - interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; - } - - interface GenericAbortSignal { - readonly aborted: boolean; - onabort?: ((...args: any) => any) | null; - addEventListener?: (...args: any) => any; - removeEventListener?: (...args: any) => any; - } - - interface FormDataVisitorHelpers { - defaultVisitor: SerializerVisitor; - convertValue: (value: any) => any; - isVisitable: (value: any) => boolean; - } - - interface SerializerVisitor { - ( - this: GenericFormData, - value: any, - key: string | number, - path: null | Array, - helpers: FormDataVisitorHelpers - ): boolean; - } - - interface SerializerOptions { - visitor?: SerializerVisitor; - dots?: boolean; - metaTokens?: boolean; - indexes?: boolean | null; - } - - // tslint:disable-next-line - interface FormSerializerOptions extends SerializerOptions { - } - - interface ParamEncoder { - (value: any, defaultEncoder: (value: any) => any): any; - } - - interface CustomParamsSerializer { - (params: Record, options?: ParamsSerializerOptions): string; - } - - interface ParamsSerializerOptions extends SerializerOptions { - encode?: ParamEncoder; - serialize?: CustomParamsSerializer; - } - - type MaxUploadRate = number; - - type MaxDownloadRate = number; - - type BrowserProgressEvent = any; - - interface AxiosProgressEvent { - loaded: number; - total?: number; - progress?: number; - bytes: number; - rate?: number; - estimated?: number; - upload?: boolean; - download?: boolean; - event?: BrowserProgressEvent; - } - - type Milliseconds = number; - - type AxiosAdapterName = 'xhr' | 'http' | string; - - type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; - - type AddressFamily = 4 | 6 | undefined; - - interface LookupAddressEntry { - address: string; - family?: AddressFamily; - } - - type LookupAddress = string | LookupAddressEntry; - - interface AxiosRequestConfig { - url?: string; - method?: Method | string; - baseURL?: string; - transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; - transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; - headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; - params?: any; - paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; - data?: D; - timeout?: Milliseconds; - timeoutErrorMessage?: string; - withCredentials?: boolean; - adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; - auth?: AxiosBasicCredentials; - responseType?: ResponseType; - responseEncoding?: responseEncoding | string; - xsrfCookieName?: string; - xsrfHeaderName?: string; - onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; - onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; - maxContentLength?: number; - validateStatus?: ((status: number) => boolean) | null; - maxBodyLength?: number; - maxRedirects?: number; - maxRate?: number | [MaxUploadRate, MaxDownloadRate]; - beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; - socketPath?: string | null; - transport?: any; - httpAgent?: any; - httpsAgent?: any; - proxy?: AxiosProxyConfig | false; - cancelToken?: CancelToken; - decompress?: boolean; - transitional?: TransitionalOptions; - signal?: GenericAbortSignal; - insecureHTTPParser?: boolean; - env?: { - FormData?: new (...args: any[]) => object; - }; - formSerializer?: FormSerializerOptions; - family?: AddressFamily; - lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | - ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); - withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); - } - - // Alias - type RawAxiosRequestConfig = AxiosRequestConfig; - - interface InternalAxiosRequestConfig extends AxiosRequestConfig { - headers: AxiosRequestHeaders; - } - - interface HeadersDefaults { - common: RawAxiosRequestHeaders; - delete: RawAxiosRequestHeaders; - get: RawAxiosRequestHeaders; - head: RawAxiosRequestHeaders; - post: RawAxiosRequestHeaders; - put: RawAxiosRequestHeaders; - patch: RawAxiosRequestHeaders; - options?: RawAxiosRequestHeaders; - purge?: RawAxiosRequestHeaders; - link?: RawAxiosRequestHeaders; - unlink?: RawAxiosRequestHeaders; - } - - interface AxiosDefaults extends Omit, 'headers'> { - headers: HeadersDefaults; - } - - interface CreateAxiosDefaults extends Omit, 'headers'> { - headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; - } - - interface AxiosResponse { - data: T; - status: number; - statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; - config: InternalAxiosRequestConfig; - request?: any; - } - - type AxiosPromise = Promise>; - - interface CancelStatic { - new (message?: string): Cancel; - } - - interface Cancel { - message: string | undefined; - } - - interface Canceler { - (message?: string, config?: AxiosRequestConfig, request?: any): void; - } - - interface CancelTokenStatic { - new (executor: (cancel: Canceler) => void): CancelToken; - source(): CancelTokenSource; - } - - interface CancelToken { - promise: Promise; - reason?: Cancel; - throwIfRequested(): void; - } - - interface CancelTokenSource { - token: CancelToken; - cancel: Canceler; - } - - interface AxiosInterceptorOptions { - synchronous?: boolean; - runWhen?: (config: InternalAxiosRequestConfig) => boolean; - } - - interface AxiosInterceptorManager { - use(onFulfilled?: (value: V) => V | Promise, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number; - eject(id: number): void; - clear(): void; - } - - interface AxiosInstance extends Axios { - , D = any>(config: AxiosRequestConfig): Promise; - , D = any>(url: string, config?: AxiosRequestConfig): Promise; - - defaults: Omit & { - headers: HeadersDefaults & { - [key: string]: AxiosHeaderValue - } - }; - } - - interface GenericFormData { - append(name: string, value: any, options?: any): any; - } - - interface GenericHTMLFormElement { - name: string; - method: string; - submit(): void; - } - - interface AxiosStatic extends AxiosInstance { - create(config?: CreateAxiosDefaults): AxiosInstance; - Cancel: CancelStatic; - CancelToken: CancelTokenStatic; - Axios: typeof Axios; - AxiosError: typeof AxiosError; - CanceledError: typeof CanceledError; - HttpStatusCode: typeof HttpStatusCode; - readonly VERSION: string; - isCancel(value: any): value is Cancel; - all(values: Array>): Promise; - spread(callback: (...args: T[]) => R): (array: T[]) => R; - isAxiosError(payload: any): payload is AxiosError; - toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; - formToJSON(form: GenericFormData|GenericHTMLFormElement): object; - getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; - AxiosHeaders: typeof AxiosHeaders; - } -} - -declare const axios: axios.AxiosStatic; - -export = axios; diff --git a/node_modules/axios/index.d.ts b/node_modules/axios/index.d.ts deleted file mode 100644 index 02a8c09..0000000 --- a/node_modules/axios/index.d.ts +++ /dev/null @@ -1,559 +0,0 @@ -// TypeScript Version: 4.7 -export type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; - -interface RawAxiosHeaders { - [key: string]: AxiosHeaderValue; -} - -type MethodsHeaders = Partial<{ - [Key in Method as Lowercase]: AxiosHeaders; -} & {common: AxiosHeaders}>; - -type AxiosHeaderMatcher = string | RegExp | ((this: AxiosHeaders, value: string, name: string) => boolean); - -type AxiosHeaderParser = (this: AxiosHeaders, value: AxiosHeaderValue, header: string) => any; - -export class AxiosHeaders { - constructor( - headers?: RawAxiosHeaders | AxiosHeaders | string - ); - - [key: string]: any; - - set(headerName?: string, value?: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; - - get(headerName: string, parser: RegExp): RegExpExecArray | null; - get(headerName: string, matcher?: true | AxiosHeaderParser): AxiosHeaderValue; - - has(header: string, matcher?: AxiosHeaderMatcher): boolean; - - delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; - - clear(matcher?: AxiosHeaderMatcher): boolean; - - normalize(format: boolean): AxiosHeaders; - - concat(...targets: Array): AxiosHeaders; - - toJSON(asStrings?: boolean): RawAxiosHeaders; - - static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; - - static accessor(header: string | string[]): AxiosHeaders; - - static concat(...targets: Array): AxiosHeaders; - - setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentType(parser?: RegExp): RegExpExecArray | null; - getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentType(matcher?: AxiosHeaderMatcher): boolean; - - setContentLength(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentLength(parser?: RegExp): RegExpExecArray | null; - getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentLength(matcher?: AxiosHeaderMatcher): boolean; - - setAccept(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAccept(parser?: RegExp): RegExpExecArray | null; - getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasAccept(matcher?: AxiosHeaderMatcher): boolean; - - setUserAgent(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getUserAgent(parser?: RegExp): RegExpExecArray | null; - getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; - - setContentEncoding(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentEncoding(parser?: RegExp): RegExpExecArray | null; - getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; - - setAuthorization(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAuthorization(parser?: RegExp): RegExpExecArray | null; - getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; - - [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; -} - -type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent' | 'Content-Encoding' | 'Authorization'; - -type ContentType = AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; - -export type RawAxiosRequestHeaders = Partial; - -export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - -type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; - -type RawCommonResponseHeaders = { - [Key in CommonResponseHeadersList]: AxiosHeaderValue; -} & { - "set-cookie": string[]; -}; - -export type RawAxiosResponseHeaders = Partial; - -export type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; - -export interface AxiosRequestTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; -} - -export interface AxiosResponseTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; -} - -export interface AxiosAdapter { - (config: InternalAxiosRequestConfig): AxiosPromise; -} - -export interface AxiosBasicCredentials { - username: string; - password: string; -} - -export interface AxiosProxyConfig { - host: string; - port: number; - auth?: AxiosBasicCredentials; - protocol?: string; -} - -export enum HttpStatusCode { - Continue = 100, - SwitchingProtocols = 101, - Processing = 102, - EarlyHints = 103, - Ok = 200, - Created = 201, - Accepted = 202, - NonAuthoritativeInformation = 203, - NoContent = 204, - ResetContent = 205, - PartialContent = 206, - MultiStatus = 207, - AlreadyReported = 208, - ImUsed = 226, - MultipleChoices = 300, - MovedPermanently = 301, - Found = 302, - SeeOther = 303, - NotModified = 304, - UseProxy = 305, - Unused = 306, - TemporaryRedirect = 307, - PermanentRedirect = 308, - BadRequest = 400, - Unauthorized = 401, - PaymentRequired = 402, - Forbidden = 403, - NotFound = 404, - MethodNotAllowed = 405, - NotAcceptable = 406, - ProxyAuthenticationRequired = 407, - RequestTimeout = 408, - Conflict = 409, - Gone = 410, - LengthRequired = 411, - PreconditionFailed = 412, - PayloadTooLarge = 413, - UriTooLong = 414, - UnsupportedMediaType = 415, - RangeNotSatisfiable = 416, - ExpectationFailed = 417, - ImATeapot = 418, - MisdirectedRequest = 421, - UnprocessableEntity = 422, - Locked = 423, - FailedDependency = 424, - TooEarly = 425, - UpgradeRequired = 426, - PreconditionRequired = 428, - TooManyRequests = 429, - RequestHeaderFieldsTooLarge = 431, - UnavailableForLegalReasons = 451, - InternalServerError = 500, - NotImplemented = 501, - BadGateway = 502, - ServiceUnavailable = 503, - GatewayTimeout = 504, - HttpVersionNotSupported = 505, - VariantAlsoNegotiates = 506, - InsufficientStorage = 507, - LoopDetected = 508, - NotExtended = 510, - NetworkAuthenticationRequired = 511, -} - -export type Method = - | 'get' | 'GET' - | 'delete' | 'DELETE' - | 'head' | 'HEAD' - | 'options' | 'OPTIONS' - | 'post' | 'POST' - | 'put' | 'PUT' - | 'patch' | 'PATCH' - | 'purge' | 'PURGE' - | 'link' | 'LINK' - | 'unlink' | 'UNLINK'; - -export type ResponseType = - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream'; - -export type responseEncoding = - | 'ascii' | 'ASCII' - | 'ansi' | 'ANSI' - | 'binary' | 'BINARY' - | 'base64' | 'BASE64' - | 'base64url' | 'BASE64URL' - | 'hex' | 'HEX' - | 'latin1' | 'LATIN1' - | 'ucs-2' | 'UCS-2' - | 'ucs2' | 'UCS2' - | 'utf-8' | 'UTF-8' - | 'utf8' | 'UTF8' - | 'utf16le' | 'UTF16LE'; - -export interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; -} - -export interface GenericAbortSignal { - readonly aborted: boolean; - onabort?: ((...args: any) => any) | null; - addEventListener?: (...args: any) => any; - removeEventListener?: (...args: any) => any; -} - -export interface FormDataVisitorHelpers { - defaultVisitor: SerializerVisitor; - convertValue: (value: any) => any; - isVisitable: (value: any) => boolean; -} - -export interface SerializerVisitor { - ( - this: GenericFormData, - value: any, - key: string | number, - path: null | Array, - helpers: FormDataVisitorHelpers - ): boolean; -} - -export interface SerializerOptions { - visitor?: SerializerVisitor; - dots?: boolean; - metaTokens?: boolean; - indexes?: boolean | null; -} - -// tslint:disable-next-line -export interface FormSerializerOptions extends SerializerOptions { -} - -export interface ParamEncoder { - (value: any, defaultEncoder: (value: any) => any): any; -} - -export interface CustomParamsSerializer { - (params: Record, options?: ParamsSerializerOptions): string; -} - -export interface ParamsSerializerOptions extends SerializerOptions { - encode?: ParamEncoder; - serialize?: CustomParamsSerializer; -} - -type MaxUploadRate = number; - -type MaxDownloadRate = number; - -type BrowserProgressEvent = any; - -export interface AxiosProgressEvent { - loaded: number; - total?: number; - progress?: number; - bytes: number; - rate?: number; - estimated?: number; - upload?: boolean; - download?: boolean; - event?: BrowserProgressEvent; -} - -type Milliseconds = number; - -type AxiosAdapterName = 'xhr' | 'http' | string; - -type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; - -export type AddressFamily = 4 | 6 | undefined; - -export interface LookupAddressEntry { - address: string; - family?: AddressFamily; -} - -export type LookupAddress = string | LookupAddressEntry; - -export interface AxiosRequestConfig { - url?: string; - method?: Method | string; - baseURL?: string; - transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; - transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; - headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; - params?: any; - paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; - data?: D; - timeout?: Milliseconds; - timeoutErrorMessage?: string; - withCredentials?: boolean; - adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; - auth?: AxiosBasicCredentials; - responseType?: ResponseType; - responseEncoding?: responseEncoding | string; - xsrfCookieName?: string; - xsrfHeaderName?: string; - onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; - onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; - maxContentLength?: number; - validateStatus?: ((status: number) => boolean) | null; - maxBodyLength?: number; - maxRedirects?: number; - maxRate?: number | [MaxUploadRate, MaxDownloadRate]; - beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; - socketPath?: string | null; - transport?: any; - httpAgent?: any; - httpsAgent?: any; - proxy?: AxiosProxyConfig | false; - cancelToken?: CancelToken; - decompress?: boolean; - transitional?: TransitionalOptions; - signal?: GenericAbortSignal; - insecureHTTPParser?: boolean; - env?: { - FormData?: new (...args: any[]) => object; - }; - formSerializer?: FormSerializerOptions; - family?: AddressFamily; - lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | - ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); - withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); -} - -// Alias -export type RawAxiosRequestConfig = AxiosRequestConfig; - -export interface InternalAxiosRequestConfig extends AxiosRequestConfig { - headers: AxiosRequestHeaders; -} - -export interface HeadersDefaults { - common: RawAxiosRequestHeaders; - delete: RawAxiosRequestHeaders; - get: RawAxiosRequestHeaders; - head: RawAxiosRequestHeaders; - post: RawAxiosRequestHeaders; - put: RawAxiosRequestHeaders; - patch: RawAxiosRequestHeaders; - options?: RawAxiosRequestHeaders; - purge?: RawAxiosRequestHeaders; - link?: RawAxiosRequestHeaders; - unlink?: RawAxiosRequestHeaders; -} - -export interface AxiosDefaults extends Omit, 'headers'> { - headers: HeadersDefaults; -} - -export interface CreateAxiosDefaults extends Omit, 'headers'> { - headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; -} - -export interface AxiosResponse { - data: T; - status: number; - statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; - config: InternalAxiosRequestConfig; - request?: any; -} - -export class AxiosError extends Error { - constructor( - message?: string, - code?: string, - config?: InternalAxiosRequestConfig, - request?: any, - response?: AxiosResponse - ); - - config?: InternalAxiosRequestConfig; - code?: string; - request?: any; - response?: AxiosResponse; - isAxiosError: boolean; - status?: number; - toJSON: () => object; - cause?: Error; - static from( - error: Error | unknown, - code?: string, - config?: InternalAxiosRequestConfig, - request?: any, - response?: AxiosResponse, - customProps?: object, -): AxiosError; - static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; - static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; - static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; - static readonly ERR_NETWORK = "ERR_NETWORK"; - static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; - static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; - static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; - static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; - static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; - static readonly ERR_CANCELED = "ERR_CANCELED"; - static readonly ECONNABORTED = "ECONNABORTED"; - static readonly ETIMEDOUT = "ETIMEDOUT"; -} - -export class CanceledError extends AxiosError { -} - -export type AxiosPromise = Promise>; - -export interface CancelStatic { - new (message?: string): Cancel; -} - -export interface Cancel { - message: string | undefined; -} - -export interface Canceler { - (message?: string, config?: AxiosRequestConfig, request?: any): void; -} - -export interface CancelTokenStatic { - new (executor: (cancel: Canceler) => void): CancelToken; - source(): CancelTokenSource; -} - -export interface CancelToken { - promise: Promise; - reason?: Cancel; - throwIfRequested(): void; -} - -export interface CancelTokenSource { - token: CancelToken; - cancel: Canceler; -} - -export interface AxiosInterceptorOptions { - synchronous?: boolean; - runWhen?: (config: InternalAxiosRequestConfig) => boolean; -} - -export interface AxiosInterceptorManager { - use(onFulfilled?: ((value: V) => V | Promise) | null, onRejected?: ((error: any) => any) | null, options?: AxiosInterceptorOptions): number; - eject(id: number): void; - clear(): void; -} - -export class Axios { - constructor(config?: AxiosRequestConfig); - defaults: AxiosDefaults; - interceptors: { - request: AxiosInterceptorManager; - response: AxiosInterceptorManager; - }; - getUri(config?: AxiosRequestConfig): string; - request, D = any>(config: AxiosRequestConfig): Promise; - get, D = any>(url: string, config?: AxiosRequestConfig): Promise; - delete, D = any>(url: string, config?: AxiosRequestConfig): Promise; - head, D = any>(url: string, config?: AxiosRequestConfig): Promise; - options, D = any>(url: string, config?: AxiosRequestConfig): Promise; - post, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - put, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - patch, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - postForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - putForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - patchForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; -} - -export interface AxiosInstance extends Axios { - , D = any>(config: AxiosRequestConfig): Promise; - , D = any>(url: string, config?: AxiosRequestConfig): Promise; - - defaults: Omit & { - headers: HeadersDefaults & { - [key: string]: AxiosHeaderValue - } - }; -} - -export interface GenericFormData { - append(name: string, value: any, options?: any): any; -} - -export interface GenericHTMLFormElement { - name: string; - method: string; - submit(): void; -} - -export function getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; - -export function toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; - -export function formToJSON(form: GenericFormData|GenericHTMLFormElement): object; - -export function isAxiosError(payload: any): payload is AxiosError; - -export function spread(callback: (...args: T[]) => R): (array: T[]) => R; - -export function isCancel(value: any): value is Cancel; - -export function all(values: Array>): Promise; - -export interface AxiosStatic extends AxiosInstance { - create(config?: CreateAxiosDefaults): AxiosInstance; - Cancel: CancelStatic; - CancelToken: CancelTokenStatic; - Axios: typeof Axios; - AxiosError: typeof AxiosError; - HttpStatusCode: typeof HttpStatusCode; - readonly VERSION: string; - isCancel: typeof isCancel; - all: typeof all; - spread: typeof spread; - isAxiosError: typeof isAxiosError; - toFormData: typeof toFormData; - formToJSON: typeof formToJSON; - getAdapter: typeof getAdapter; - CanceledError: typeof CanceledError; - AxiosHeaders: typeof AxiosHeaders; -} - -declare const axios: AxiosStatic; - -export default axios; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js deleted file mode 100644 index fba3990..0000000 --- a/node_modules/axios/index.js +++ /dev/null @@ -1,43 +0,0 @@ -import axios from './lib/axios.js'; - -// This module is intended to unwrap Axios default export as named. -// Keep top-level export same with static properties -// so that it can keep same with es module or cjs -const { - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} = axios; - -export { - axios as default, - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} diff --git a/node_modules/axios/lib/adapters/README.md b/node_modules/axios/lib/adapters/README.md deleted file mode 100644 index 68f1118..0000000 --- a/node_modules/axios/lib/adapters/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# axios // adapters - -The modules under `adapters/` are modules that handle dispatching a request and settling a returned `Promise` once a response is received. - -## Example - -```js -var settle = require('./../core/settle'); - -module.exports = function myAdapter(config) { - // At this point: - // - config has been merged with defaults - // - request transformers have already run - // - request interceptors have already run - - // Make the request using config provided - // Upon response settle the Promise - - return new Promise(function(resolve, reject) { - - var response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - - settle(resolve, reject, response); - - // From here: - // - response transformers will run - // - response interceptors will run - }); -} -``` diff --git a/node_modules/axios/lib/adapters/adapters.js b/node_modules/axios/lib/adapters/adapters.js deleted file mode 100644 index 550997d..0000000 --- a/node_modules/axios/lib/adapters/adapters.js +++ /dev/null @@ -1,77 +0,0 @@ -import utils from '../utils.js'; -import httpAdapter from './http.js'; -import xhrAdapter from './xhr.js'; -import AxiosError from "../core/AxiosError.js"; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -} - -utils.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false; - -export default { - getAdapter: (adapters) => { - adapters = utils.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -} diff --git a/node_modules/axios/lib/adapters/http.js b/node_modules/axios/lib/adapters/http.js deleted file mode 100755 index 768e4a5..0000000 --- a/node_modules/axios/lib/adapters/http.js +++ /dev/null @@ -1,685 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; -import settle from './../core/settle.js'; -import buildFullPath from '../core/buildFullPath.js'; -import buildURL from './../helpers/buildURL.js'; -import {getProxyForUrl} from 'proxy-from-env'; -import http from 'http'; -import https from 'https'; -import util from 'util'; -import followRedirects from 'follow-redirects'; -import zlib from 'zlib'; -import {VERSION} from '../env/data.js'; -import transitionalDefaults from '../defaults/transitional.js'; -import AxiosError from '../core/AxiosError.js'; -import CanceledError from '../cancel/CanceledError.js'; -import platform from '../platform/index.js'; -import fromDataURI from '../helpers/fromDataURI.js'; -import stream from 'stream'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; -import {EventEmitter} from 'events'; -import formDataToStream from "../helpers/formDataToStream.js"; -import readBlob from "../helpers/readBlob.js"; -import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; -import callbackify from "../helpers/callbackify.js"; - -const zlibOptions = { - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH -}; - -const brotliOptions = { - flush: zlib.constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH -} - -const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects; - -const isHttps = /https:?/; - -const supportedProtocols = platform.protocols.map(protocol => { - return protocol + ':'; -}); - -/** - * If the proxy or config beforeRedirects functions are defined, call them with the options - * object. - * - * @param {Object} options - The options object that was passed to the request. - * - * @returns {Object} - */ -function dispatchBeforeRedirect(options, responseDetails) { - if (options.beforeRedirects.proxy) { - options.beforeRedirects.proxy(options); - } - if (options.beforeRedirects.config) { - options.beforeRedirects.config(options, responseDetails); - } -} - -/** - * If the proxy or config afterRedirects functions are defined, call them with the options - * - * @param {http.ClientRequestArgs} options - * @param {AxiosProxyConfig} configProxy configuration from Axios options object - * @param {string} location - * - * @returns {http.ClientRequestArgs} - */ -function setProxy(options, configProxy, location) { - let proxy = configProxy; - if (!proxy && proxy !== false) { - const proxyUrl = getProxyForUrl(location); - if (proxyUrl) { - proxy = new URL(proxyUrl); - } - } - if (proxy) { - // Basic proxy authorization - if (proxy.username) { - proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); - } - - if (proxy.auth) { - // Support proxy auth object form - if (proxy.auth.username || proxy.auth.password) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } - const base64 = Buffer - .from(proxy.auth, 'utf8') - .toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; - } - - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); - const proxyHost = proxy.hostname || proxy.host; - options.hostname = proxyHost; - // Replace 'host' since options is not a URL object - options.host = proxyHost; - options.port = proxy.port; - options.path = location; - if (proxy.protocol) { - options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; - } - } - - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { - // Configure proxy for redirected request, passing the original config proxy to apply - // the exact same logic as if the redirected request was performed by axios directly. - setProxy(redirectOptions, configProxy, redirectOptions.href); - }; -} - -const isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process'; - -// temporary hotfix - -const wrapAsync = (asyncExecutor) => { - return new Promise((resolve, reject) => { - let onDone; - let isDone; - - const done = (value, isRejected) => { - if (isDone) return; - isDone = true; - onDone && onDone(value, isRejected); - } - - const _resolve = (value) => { - done(value); - resolve(value); - }; - - const _reject = (reason) => { - done(reason, true); - reject(reason); - } - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) -}; - -const resolveFamily = ({address, family}) => { - if (!utils.isString(address)) { - throw TypeError('address must be a string'); - } - return ({ - address, - family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); -} - -const buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family}); - -/*eslint consistent-return:0*/ -export default isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family} = config; - const {responseType, responseEncoding} = config; - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - - if (lookup) { - const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]); - // hotfix to support opt.all option which is required for node 20.x - lookup = (hostname, opt, cb) => { - _lookup(hostname, opt, (err, arg0, arg1) => { - if (err) { - return cb(err); - } - - const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); - }); - } - } - - // temporary internal emitter until the AxiosRequest class will be implemented - const emitter = new EventEmitter(); - - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - - emitter.removeAllListeners(); - } - - onDone((value, isRejected) => { - isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - } - }); - - function abort(reason) { - emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); - } - - emitter.once('abort', reject); - - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url); - const parsed = new URL(fullPath, 'http://localhost'); - const protocol = parsed.protocol || supportedProtocols[0]; - - if (protocol === 'data:') { - let convertedData; - - if (method !== 'GET') { - return settle(resolve, reject, { - status: 405, - statusText: 'method not allowed', - headers: {}, - config - }); - } - - try { - convertedData = fromDataURI(config.url, responseType === 'blob', { - Blob: config.env && config.env.Blob - }); - } catch (err) { - throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); - } - - if (responseType === 'text') { - convertedData = convertedData.toString(responseEncoding); - - if (!responseEncoding || responseEncoding === 'utf8') { - convertedData = utils.stripBOM(convertedData); - } - } else if (responseType === 'stream') { - convertedData = stream.Readable.from(convertedData); - } - - return settle(resolve, reject, { - data: convertedData, - status: 200, - statusText: 'OK', - headers: new AxiosHeaders(), - config - }); - } - - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError( - 'Unsupported protocol ' + protocol, - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - const headers = AxiosHeaders.from(config.headers).normalize(); - - // Set User-Agent (required by some servers) - // See https://github.com/axios/axios/issues/69 - // User-Agent is specified; handle case where no UA header is desired - // Only set header if it hasn't been set in config - headers.set('User-Agent', 'axios/' + VERSION, false); - - const onDownloadProgress = config.onDownloadProgress; - const onUploadProgress = config.onUploadProgress; - const maxRate = config.maxRate; - let maxUploadRate = undefined; - let maxDownloadRate = undefined; - - // support for spec compliant FormData objects - if (utils.isSpecCompliantForm(data)) { - const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream(data, (formHeaders) => { - headers.set(formHeaders); - }, { - tag: `axios-${VERSION}-boundary`, - boundary: userBoundary && userBoundary[1] || undefined - }); - // support for https://www.npmjs.com/package/form-data api - } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { - headers.set(data.getHeaders()); - - if (!headers.hasContentLength()) { - try { - const knownLength = await util.promisify(data.getLength).call(data); - Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); - /*eslint no-empty:0*/ - } catch (e) { - } - } - } else if (utils.isBlob(data)) { - data.size && headers.setContentType(data.type || 'application/octet-stream'); - headers.setContentLength(data.size || 0); - data = stream.Readable.from(readBlob(data)); - } else if (data && !utils.isStream(data)) { - if (Buffer.isBuffer(data)) { - // Nothing to do... - } else if (utils.isArrayBuffer(data)) { - data = Buffer.from(new Uint8Array(data)); - } else if (utils.isString(data)) { - data = Buffer.from(data, 'utf-8'); - } else { - return reject(new AxiosError( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - // Add Content-Length header if data exists - headers.setContentLength(data.length, false); - - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError( - 'Request body larger than maxBodyLength limit', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - } - - const contentLength = utils.toFiniteNumber(headers.getContentLength()); - - if (utils.isArray(maxRate)) { - maxUploadRate = maxRate[0]; - maxDownloadRate = maxRate[1]; - } else { - maxUploadRate = maxDownloadRate = maxRate; - } - - if (data && (onUploadProgress || maxUploadRate)) { - if (!utils.isStream(data)) { - data = stream.Readable.from(data, {objectMode: false}); - } - - data = stream.pipeline([data, new AxiosTransformStream({ - length: contentLength, - maxRate: utils.toFiniteNumber(maxUploadRate) - })], utils.noop); - - onUploadProgress && data.on('progress', progress => { - onUploadProgress(Object.assign(progress, { - upload: true - })); - }); - } - - // HTTP basic authentication - let auth = undefined; - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password || ''; - auth = username + ':' + password; - } - - if (!auth && parsed.username) { - const urlUsername = parsed.username; - const urlPassword = parsed.password; - auth = urlUsername + ':' + urlPassword; - } - - auth && headers.delete('authorization'); - - let path; - - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); - } catch (err) { - const customErr = new Error(err.message); - customErr.config = config; - customErr.url = config.url; - customErr.exists = true; - return reject(customErr); - } - - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); - - const options = { - path, - method: method, - headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: {} - }; - - // cacheable-lookup integration hotfix - !utils.isUndefined(lookup) && (options.lookup = lookup); - - if (config.socketPath) { - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname; - options.port = parsed.port; - setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); - } - - let transport; - const isHttpsRequest = isHttps.test(options.protocol); - options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (config.transport) { - transport = config.transport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https : http; - } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - if (config.beforeRedirect) { - options.beforeRedirects.config = config.beforeRedirect; - } - transport = isHttpsRequest ? httpsFollow : httpFollow; - } - - if (config.maxBodyLength > -1) { - options.maxBodyLength = config.maxBodyLength; - } else { - // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited - options.maxBodyLength = Infinity; - } - - if (config.insecureHTTPParser) { - options.insecureHTTPParser = config.insecureHTTPParser; - } - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - - const streams = [res]; - - const responseLength = +res.headers['content-length']; - - if (onDownloadProgress) { - const transformStream = new AxiosTransformStream({ - length: utils.toFiniteNumber(responseLength), - maxRate: utils.toFiniteNumber(maxDownloadRate) - }); - - onDownloadProgress && transformStream.on('progress', progress => { - onDownloadProgress(Object.assign(progress, { - download: true - })); - }); - - streams.push(transformStream); - } - - // decompress the response body transparently if required - let responseStream = res; - - // return the last request in case of redirects - const lastRequest = res.req || req; - - // if decompress disabled we should not decompress - if (config.decompress !== false && res.headers['content-encoding']) { - // if no content, but headers still say that it is encoded, - // remove the header not confuse downstream operations - if (method === 'HEAD' || res.statusCode === 204) { - delete res.headers['content-encoding']; - } - - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib.createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new ZlibHeaderTransformStream()); - - // add the unzipper to the body stream processing pipeline - streams.push(zlib.createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib.createBrotliDecompress(brotliOptions)); - delete res.headers['content-encoding']; - } - } - } - - responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; - - const offListeners = stream.finished(responseStream, () => { - offListeners(); - onFinished(); - }); - - const response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new AxiosHeaders(res.headers), - config, - request: lastRequest - }; - - if (responseType === 'stream') { - response.data = responseStream; - settle(resolve, reject, response); - } else { - const responseBuffer = []; - let totalResponseBytes = 0; - - responseStream.on('data', function handleStreamData(chunk) { - responseBuffer.push(chunk); - totalResponseBytes += chunk.length; - - // make sure the content length is not over the maxContentLength if specified - if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { - // stream.destroy() emit aborted event before calling reject() on Node.js v16 - rejected = true; - responseStream.destroy(); - reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); - } - }); - - responseStream.on('aborted', function handlerStreamAborted() { - if (rejected) { - return; - } - - const err = new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - responseStream.destroy(err); - reject(err); - }); - - responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; - reject(AxiosError.from(err, null, config, lastRequest)); - }); - - responseStream.on('end', function handleStreamEnd() { - try { - let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); - if (responseType !== 'arraybuffer') { - responseData = responseData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { - responseData = utils.stripBOM(responseData); - } - } - response.data = responseData; - } catch (err) { - return reject(AxiosError.from(err, null, config, response.request, response)); - } - settle(resolve, reject, response); - }); - } - - emitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - - emitter.once('abort', err => { - reject(err); - req.destroy(err); - }); - - // Handle errors - req.on('error', function handleRequestError(err) { - // @todo remove - // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; - reject(AxiosError.from(err, null, config, req)); - }); - - // set tcp keep alive to prevent drop connection by peer - req.on('socket', function handleRequestSocket(socket) { - // default interval of sending ack packet is 1 minute - socket.setKeepAlive(true, 1000 * 60); - }); - - // Handle request timeout - if (config.timeout) { - // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. - const timeout = parseInt(config.timeout, 10); - - if (Number.isNaN(timeout)) { - reject(new AxiosError( - 'error trying to parse `config.timeout` to int', - AxiosError.ERR_BAD_OPTION_VALUE, - config, - req - )); - - return; - } - - // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. - // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. - // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. - // And then these socket which be hang up will devouring CPU little by little. - // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. - req.setTimeout(timeout, function handleRequestTimeout() { - if (isDone) return; - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - req - )); - abort(); - }); - } - - - // Send the request - if (utils.isStream(data)) { - let ended = false; - let errored = false; - - data.on('end', () => { - ended = true; - }); - - data.once('error', err => { - errored = true; - req.destroy(err); - }); - - data.on('close', () => { - if (!ended && !errored) { - abort(new CanceledError('Request stream has been aborted', config, req)); - } - }); - - data.pipe(req); - } else { - req.end(data); - } - }); -} - -export const __setProxy = setProxy; diff --git a/node_modules/axios/lib/adapters/xhr.js b/node_modules/axios/lib/adapters/xhr.js deleted file mode 100644 index 26126b2..0000000 --- a/node_modules/axios/lib/adapters/xhr.js +++ /dev/null @@ -1,260 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; -import settle from './../core/settle.js'; -import cookies from './../helpers/cookies.js'; -import buildURL from './../helpers/buildURL.js'; -import buildFullPath from '../core/buildFullPath.js'; -import isURLSameOrigin from './../helpers/isURLSameOrigin.js'; -import transitionalDefaults from '../defaults/transitional.js'; -import AxiosError from '../core/AxiosError.js'; -import CanceledError from '../cancel/CanceledError.js'; -import parseProtocol from '../helpers/parseProtocol.js'; -import platform from '../platform/index.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import speedometer from '../helpers/speedometer.js'; - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -export default isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -} diff --git a/node_modules/axios/lib/axios.js b/node_modules/axios/lib/axios.js deleted file mode 100644 index 873f246..0000000 --- a/node_modules/axios/lib/axios.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; - -import utils from './utils.js'; -import bind from './helpers/bind.js'; -import Axios from './core/Axios.js'; -import mergeConfig from './core/mergeConfig.js'; -import defaults from './defaults/index.js'; -import formDataToJSON from './helpers/formDataToJSON.js'; -import CanceledError from './cancel/CanceledError.js'; -import CancelToken from './cancel/CancelToken.js'; -import isCancel from './cancel/isCancel.js'; -import {VERSION} from './env/data.js'; -import toFormData from './helpers/toFormData.js'; -import AxiosError from './core/AxiosError.js'; -import spread from './helpers/spread.js'; -import isAxiosError from './helpers/isAxiosError.js'; -import AxiosHeaders from "./core/AxiosHeaders.js"; -import adapters from './adapters/adapters.js'; -import HttpStatusCode from './helpers/HttpStatusCode.js'; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios(defaultConfig); - const instance = bind(Axios.prototype.request, context); - - // Copy axios.prototype to instance - utils.extend(instance, Axios.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders; - -axios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode; - -axios.default = axios; - -// this module should only have a default export -export default axios diff --git a/node_modules/axios/lib/cancel/CancelToken.js b/node_modules/axios/lib/cancel/CancelToken.js deleted file mode 100644 index 20d8f68..0000000 --- a/node_modules/axios/lib/cancel/CancelToken.js +++ /dev/null @@ -1,121 +0,0 @@ -'use strict'; - -import CanceledError from './CanceledError.js'; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -export default CancelToken; diff --git a/node_modules/axios/lib/cancel/CanceledError.js b/node_modules/axios/lib/cancel/CanceledError.js deleted file mode 100644 index 880066e..0000000 --- a/node_modules/axios/lib/cancel/CanceledError.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; -import utils from '../utils.js'; - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -export default CanceledError; diff --git a/node_modules/axios/lib/cancel/isCancel.js b/node_modules/axios/lib/cancel/isCancel.js deleted file mode 100644 index a444a12..0000000 --- a/node_modules/axios/lib/cancel/isCancel.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -export default function isCancel(value) { - return !!(value && value.__CANCEL__); -} diff --git a/node_modules/axios/lib/core/Axios.js b/node_modules/axios/lib/core/Axios.js deleted file mode 100644 index 2713364..0000000 --- a/node_modules/axios/lib/core/Axios.js +++ /dev/null @@ -1,225 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; -import buildURL from '../helpers/buildURL.js'; -import InterceptorManager from './InterceptorManager.js'; -import dispatchRequest from './dispatchRequest.js'; -import mergeConfig from './mergeConfig.js'; -import buildFullPath from './buildFullPath.js'; -import validator from '../helpers/validator.js'; -import AxiosHeaders from './AxiosHeaders.js'; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - } - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils.merge( - headers.common, - headers[config.method] - ); - - headers && utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -export default Axios; diff --git a/node_modules/axios/lib/core/AxiosError.js b/node_modules/axios/lib/core/AxiosError.js deleted file mode 100644 index 7141a8c..0000000 --- a/node_modules/axios/lib/core/AxiosError.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype); - - utils.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -export default AxiosError; diff --git a/node_modules/axios/lib/core/AxiosHeaders.js b/node_modules/axios/lib/core/AxiosHeaders.js deleted file mode 100644 index 558ad8f..0000000 --- a/node_modules/axios/lib/core/AxiosHeaders.js +++ /dev/null @@ -1,298 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import parseHeaders from '../helpers/parseHeaders.js'; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils.isString(value)) return; - - if (utils.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite) - } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils.forEach(this, (value, header) => { - const key = utils.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils.freezeMethods(AxiosHeaders); - -export default AxiosHeaders; diff --git a/node_modules/axios/lib/core/InterceptorManager.js b/node_modules/axios/lib/core/InterceptorManager.js deleted file mode 100644 index 6657a9d..0000000 --- a/node_modules/axios/lib/core/InterceptorManager.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -export default InterceptorManager; diff --git a/node_modules/axios/lib/core/README.md b/node_modules/axios/lib/core/README.md deleted file mode 100644 index 84559ce..0000000 --- a/node_modules/axios/lib/core/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# axios // core - -The modules found in `core/` should be modules that are specific to the domain logic of axios. These modules would most likely not make sense to be consumed outside of the axios module, as their logic is too specific. Some examples of core modules are: - -- Dispatching requests - - Requests sent via `adapters/` (see lib/adapters/README.md) -- Managing interceptors -- Handling config diff --git a/node_modules/axios/lib/core/buildFullPath.js b/node_modules/axios/lib/core/buildFullPath.js deleted file mode 100644 index b60927c..0000000 --- a/node_modules/axios/lib/core/buildFullPath.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; -import combineURLs from '../helpers/combineURLs.js'; - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -export default function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} diff --git a/node_modules/axios/lib/core/dispatchRequest.js b/node_modules/axios/lib/core/dispatchRequest.js deleted file mode 100644 index 9e306aa..0000000 --- a/node_modules/axios/lib/core/dispatchRequest.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -import transformData from './transformData.js'; -import isCancel from '../cancel/isCancel.js'; -import defaults from '../defaults/index.js'; -import CanceledError from '../cancel/CanceledError.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import adapters from "../adapters/adapters.js"; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -export default function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} diff --git a/node_modules/axios/lib/core/mergeConfig.js b/node_modules/axios/lib/core/mergeConfig.js deleted file mode 100644 index e4600e5..0000000 --- a/node_modules/axios/lib/core/mergeConfig.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosHeaders from "./AxiosHeaders.js"; - -const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -export default function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils.isPlainObject(target) && utils.isPlainObject(source)) { - return utils.merge.call({caseless}, target, source); - } else if (utils.isPlainObject(source)) { - return utils.merge({}, source); - } else if (utils.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} diff --git a/node_modules/axios/lib/core/settle.js b/node_modules/axios/lib/core/settle.js deleted file mode 100644 index ac905c4..0000000 --- a/node_modules/axios/lib/core/settle.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; - -import AxiosError from './AxiosError.js'; - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -export default function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError( - 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} diff --git a/node_modules/axios/lib/core/transformData.js b/node_modules/axios/lib/core/transformData.js deleted file mode 100644 index eeb5a8a..0000000 --- a/node_modules/axios/lib/core/transformData.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; -import defaults from '../defaults/index.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -export default function transformData(fns, response) { - const config = this || defaults; - const context = response || config; - const headers = AxiosHeaders.from(context.headers); - let data = context.data; - - utils.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} diff --git a/node_modules/axios/lib/defaults/index.js b/node_modules/axios/lib/defaults/index.js deleted file mode 100644 index 774893a..0000000 --- a/node_modules/axios/lib/defaults/index.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -import transitionalDefaults from './transitional.js'; -import toFormData from '../helpers/toFormData.js'; -import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; -import platform from '../platform/index.js'; -import formDataToJSON from '../helpers/formDataToJSON.js'; - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils.isObject(data); - - if (isObjectPayload && utils.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils.isArrayBuffer(data) || - utils.isBuffer(data) || - utils.isStream(data) || - utils.isFile(data) || - utils.isBlob(data) - ) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -export default defaults; diff --git a/node_modules/axios/lib/defaults/transitional.js b/node_modules/axios/lib/defaults/transitional.js deleted file mode 100644 index f891331..0000000 --- a/node_modules/axios/lib/defaults/transitional.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -export default { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; diff --git a/node_modules/axios/lib/env/README.md b/node_modules/axios/lib/env/README.md deleted file mode 100644 index b41baff..0000000 --- a/node_modules/axios/lib/env/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# axios // env - -The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/node_modules/axios/lib/env/classes/FormData.js b/node_modules/axios/lib/env/classes/FormData.js deleted file mode 100644 index 862adb9..0000000 --- a/node_modules/axios/lib/env/classes/FormData.js +++ /dev/null @@ -1,2 +0,0 @@ -import _FormData from 'form-data'; -export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/node_modules/axios/lib/env/data.js b/node_modules/axios/lib/env/data.js deleted file mode 100644 index d4cb5d5..0000000 --- a/node_modules/axios/lib/env/data.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "1.6.8"; \ No newline at end of file diff --git a/node_modules/axios/lib/helpers/AxiosTransformStream.js b/node_modules/axios/lib/helpers/AxiosTransformStream.js deleted file mode 100644 index 8e8c6d4..0000000 --- a/node_modules/axios/lib/helpers/AxiosTransformStream.js +++ /dev/null @@ -1,191 +0,0 @@ -'use strict'; - -import stream from 'stream'; -import utils from '../utils.js'; -import throttle from './throttle.js'; -import speedometer from './speedometer.js'; - -const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream.Transform{ - constructor(options) { - options = utils.toFlatObject(options, { - maxRate: 0, - chunkSize: 64 * 1024, - minChunkSize: 100, - timeWindow: 500, - ticksRate: 2, - samplesCount: 15 - }, null, (prop, source) => { - return !utils.isUndefined(source[prop]); - }); - - super({ - readableHighWaterMark: options.chunkSize - }); - - const self = this; - - const internals = this[kInternals] = { - length: options.length, - timeWindow: options.timeWindow, - ticksRate: options.ticksRate, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null - }; - - const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); - - this.on('newListener', event => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - - let bytesNotified = 0; - - internals.updateProgress = throttle(function throttledHandler() { - const totalBytes = internals.length; - const bytesTransferred = internals.bytesSeen; - const progressBytes = bytesTransferred - bytesNotified; - if (!progressBytes || self.destroyed) return; - - const rate = _speedometer(progressBytes); - - bytesNotified = bytesTransferred; - - process.nextTick(() => { - self.emit('progress', { - 'loaded': bytesTransferred, - 'total': totalBytes, - 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, - 'bytes': progressBytes, - 'rate': rate ? rate : undefined, - 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? - (totalBytes - bytesTransferred) / rate : undefined - }); - }); - }, internals.ticksRate); - - const onFinish = () => { - internals.updateProgress(true); - }; - - this.once('end', onFinish); - this.once('error', onFinish); - } - - _read(size) { - const internals = this[kInternals]; - - if (internals.onReadCallback) { - internals.onReadCallback(); - } - - return super._read(size); - } - - _transform(chunk, encoding, callback) { - const self = this; - const internals = this[kInternals]; - const maxRate = internals.maxRate; - - const readableHighWaterMark = this.readableHighWaterMark; - - const timeWindow = internals.timeWindow; - - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); - const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - - function pushChunk(_chunk, _callback) { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - - if (internals.isCaptured) { - internals.updateProgress(); - } - - if (self.push(_chunk)) { - process.nextTick(_callback); - } else { - internals.onReadCallback = () => { - internals.onReadCallback = null; - process.nextTick(_callback); - }; - } - } - - const transformChunk = (_chunk, _callback) => { - const chunkSize = Buffer.byteLength(_chunk); - let chunkRemainder = null; - let maxChunkSize = readableHighWaterMark; - let bytesLeft; - let passed = 0; - - if (maxRate) { - const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { - internals.ts = now; - bytesLeft = bytesThreshold - internals.bytes; - internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; - passed = 0; - } - - bytesLeft = bytesThreshold - internals.bytes; - } - - if (maxRate) { - if (bytesLeft <= 0) { - // next time window - return setTimeout(() => { - _callback(null, _chunk); - }, timeWindow - passed); - } - - if (bytesLeft < maxChunkSize) { - maxChunkSize = bytesLeft; - } - } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { - chunkRemainder = _chunk.subarray(maxChunkSize); - _chunk = _chunk.subarray(0, maxChunkSize); - } - - pushChunk(_chunk, chunkRemainder ? () => { - process.nextTick(_callback, null, chunkRemainder); - } : _callback); - }; - - transformChunk(chunk, function transformNextChunk(err, _chunk) { - if (err) { - return callback(err); - } - - if (_chunk) { - transformChunk(_chunk, transformNextChunk); - } else { - callback(null); - } - }); - } - - setLength(length) { - this[kInternals].length = +length; - return this; - } -} - -export default AxiosTransformStream; diff --git a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js deleted file mode 100644 index b9aa9f0..0000000 --- a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -import toFormData from './toFormData.js'; - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode); - } : encode; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -export default AxiosURLSearchParams; diff --git a/node_modules/axios/lib/helpers/HttpStatusCode.js b/node_modules/axios/lib/helpers/HttpStatusCode.js deleted file mode 100644 index b3e7adc..0000000 --- a/node_modules/axios/lib/helpers/HttpStatusCode.js +++ /dev/null @@ -1,71 +0,0 @@ -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -export default HttpStatusCode; diff --git a/node_modules/axios/lib/helpers/README.md b/node_modules/axios/lib/helpers/README.md deleted file mode 100644 index 4ae3419..0000000 --- a/node_modules/axios/lib/helpers/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# axios // helpers - -The modules found in `helpers/` should be generic modules that are _not_ specific to the domain logic of axios. These modules could theoretically be published to npm on their own and consumed by other modules or apps. Some examples of generic modules are things like: - -- Browser polyfills -- Managing cookies -- Parsing HTTP headers diff --git a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js deleted file mode 100644 index d1791f0..0000000 --- a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; - -import stream from "stream"; - -class ZlibHeaderTransformStream extends stream.Transform { - __transform(chunk, encoding, callback) { - this.push(chunk); - callback(); - } - - _transform(chunk, encoding, callback) { - if (chunk.length !== 0) { - this._transform = this.__transform; - - // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 - const header = Buffer.alloc(2); - header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C - this.push(header, encoding); - } - } - - this.__transform(chunk, encoding, callback); - } -} - -export default ZlibHeaderTransformStream; diff --git a/node_modules/axios/lib/helpers/bind.js b/node_modules/axios/lib/helpers/bind.js deleted file mode 100644 index b3aa83b..0000000 --- a/node_modules/axios/lib/helpers/bind.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -export default function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} diff --git a/node_modules/axios/lib/helpers/buildURL.js b/node_modules/axios/lib/helpers/buildURL.js deleted file mode 100644 index d769fdf..0000000 --- a/node_modules/axios/lib/helpers/buildURL.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -export default function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} diff --git a/node_modules/axios/lib/helpers/callbackify.js b/node_modules/axios/lib/helpers/callbackify.js deleted file mode 100644 index 4603bad..0000000 --- a/node_modules/axios/lib/helpers/callbackify.js +++ /dev/null @@ -1,16 +0,0 @@ -import utils from "../utils.js"; - -const callbackify = (fn, reducer) => { - return utils.isAsyncFn(fn) ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); - } - }, cb); - } : fn; -} - -export default callbackify; diff --git a/node_modules/axios/lib/helpers/combineURLs.js b/node_modules/axios/lib/helpers/combineURLs.js deleted file mode 100644 index 9f04f02..0000000 --- a/node_modules/axios/lib/helpers/combineURLs.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -export default function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} diff --git a/node_modules/axios/lib/helpers/cookies.js b/node_modules/axios/lib/helpers/cookies.js deleted file mode 100644 index d039ac4..0000000 --- a/node_modules/axios/lib/helpers/cookies.js +++ /dev/null @@ -1,42 +0,0 @@ -import utils from './../utils.js'; -import platform from '../platform/index.js'; - -export default platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils.isString(path) && cookie.push('path=' + path); - - utils.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - diff --git a/node_modules/axios/lib/helpers/deprecatedMethod.js b/node_modules/axios/lib/helpers/deprecatedMethod.js deleted file mode 100644 index 9e8fae6..0000000 --- a/node_modules/axios/lib/helpers/deprecatedMethod.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -/*eslint no-console:0*/ - -/** - * Supply a warning to the developer that a method they are using - * has been deprecated. - * - * @param {string} method The name of the deprecated method - * @param {string} [instead] The alternate method to use if applicable - * @param {string} [docs] The documentation URL to get further details - * - * @returns {void} - */ -export default function deprecatedMethod(method, instead, docs) { - try { - console.warn( - 'DEPRECATED method `' + method + '`.' + - (instead ? ' Use `' + instead + '` instead.' : '') + - ' This method will be removed in a future release.'); - - if (docs) { - console.warn('For more information about usage see ' + docs); - } - } catch (e) { /* Ignore */ } -} diff --git a/node_modules/axios/lib/helpers/formDataToJSON.js b/node_modules/axios/lib/helpers/formDataToJSON.js deleted file mode 100644 index 906ce60..0000000 --- a/node_modules/axios/lib/helpers/formDataToJSON.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils.isArray(target) ? target.length : name; - - if (isLast) { - if (utils.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { - const obj = {}; - - utils.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -export default formDataToJSON; diff --git a/node_modules/axios/lib/helpers/formDataToStream.js b/node_modules/axios/lib/helpers/formDataToStream.js deleted file mode 100644 index 9187e73..0000000 --- a/node_modules/axios/lib/helpers/formDataToStream.js +++ /dev/null @@ -1,111 +0,0 @@ -import {TextEncoder} from 'util'; -import {Readable} from 'stream'; -import utils from "../utils.js"; -import readBlob from "./readBlob.js"; - -const BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = new TextEncoder(); - -const CRLF = '\r\n'; -const CRLF_BYTES = textEncoder.encode(CRLF); -const CRLF_BYTES_COUNT = 2; - -class FormDataPart { - constructor(name, value) { - const {escapeName} = this.constructor; - const isStringValue = utils.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - - if (isStringValue) { - value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); - } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}` - } - - this.headers = textEncoder.encode(headers + CRLF); - - this.contentLength = isStringValue ? value.byteLength : value.size; - - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - - this.name = name; - this.value = value; - } - - async *encode(){ - yield this.headers; - - const {value} = this; - - if(utils.isTypedArray(value)) { - yield value; - } else { - yield* readBlob(value); - } - - yield CRLF_BYTES; - } - - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); - } -} - -const formDataToStream = (form, headersHandler, options) => { - const { - tag = 'form-data-boundary', - size = 25, - boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET) - } = options || {}; - - if(!utils.isFormData(form)) { - throw TypeError('FormData instance required'); - } - - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') - } - - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); - const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); - let contentLength = footerBytes.byteLength; - - const parts = Array.from(form.entries()).map(([name, value]) => { - const part = new FormDataPart(name, value); - contentLength += part.size; - return part; - }); - - contentLength += boundaryBytes.byteLength * parts.length; - - contentLength = utils.toFiniteNumber(contentLength); - - const computedHeaders = { - 'Content-Type': `multipart/form-data; boundary=${boundary}` - } - - if (Number.isFinite(contentLength)) { - computedHeaders['Content-Length'] = contentLength; - } - - headersHandler && headersHandler(computedHeaders); - - return Readable.from((async function *() { - for(const part of parts) { - yield boundaryBytes; - yield* part.encode(); - } - - yield footerBytes; - })()); -}; - -export default formDataToStream; diff --git a/node_modules/axios/lib/helpers/fromDataURI.js b/node_modules/axios/lib/helpers/fromDataURI.js deleted file mode 100644 index eb71d3f..0000000 --- a/node_modules/axios/lib/helpers/fromDataURI.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; -import parseProtocol from './parseProtocol.js'; -import platform from '../platform/index.js'; - -const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; - -/** - * Parse data uri to a Buffer or Blob - * - * @param {String} uri - * @param {?Boolean} asBlob - * @param {?Object} options - * @param {?Function} options.Blob - * - * @returns {Buffer|Blob} - */ -export default function fromDataURI(uri, asBlob, options) { - const _Blob = options && options.Blob || platform.classes.Blob; - const protocol = parseProtocol(uri); - - if (asBlob === undefined && _Blob) { - asBlob = true; - } - - if (protocol === 'data') { - uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - - const match = DATA_URL_PATTERN.exec(uri); - - if (!match) { - throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); - } - - const mime = match[1]; - const isBase64 = match[2]; - const body = match[3]; - const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - - if (asBlob) { - if (!_Blob) { - throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); - } - - return new _Blob([buffer], {type: mime}); - } - - return buffer; - } - - throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); -} diff --git a/node_modules/axios/lib/helpers/isAbsoluteURL.js b/node_modules/axios/lib/helpers/isAbsoluteURL.js deleted file mode 100644 index 4747a45..0000000 --- a/node_modules/axios/lib/helpers/isAbsoluteURL.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -export default function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} diff --git a/node_modules/axios/lib/helpers/isAxiosError.js b/node_modules/axios/lib/helpers/isAxiosError.js deleted file mode 100644 index da6cd63..0000000 --- a/node_modules/axios/lib/helpers/isAxiosError.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -export default function isAxiosError(payload) { - return utils.isObject(payload) && (payload.isAxiosError === true); -} diff --git a/node_modules/axios/lib/helpers/isURLSameOrigin.js b/node_modules/axios/lib/helpers/isURLSameOrigin.js deleted file mode 100644 index a8678a4..0000000 --- a/node_modules/axios/lib/helpers/isURLSameOrigin.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; -import platform from '../platform/index.js'; - -export default platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); diff --git a/node_modules/axios/lib/helpers/null.js b/node_modules/axios/lib/helpers/null.js deleted file mode 100644 index b9f82c4..0000000 --- a/node_modules/axios/lib/helpers/null.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line strict -export default null; diff --git a/node_modules/axios/lib/helpers/parseHeaders.js b/node_modules/axios/lib/helpers/parseHeaders.js deleted file mode 100644 index 50af948..0000000 --- a/node_modules/axios/lib/helpers/parseHeaders.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -import utils from './../utils.js'; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -export default rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; diff --git a/node_modules/axios/lib/helpers/parseProtocol.js b/node_modules/axios/lib/helpers/parseProtocol.js deleted file mode 100644 index 586ec96..0000000 --- a/node_modules/axios/lib/helpers/parseProtocol.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -export default function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} diff --git a/node_modules/axios/lib/helpers/readBlob.js b/node_modules/axios/lib/helpers/readBlob.js deleted file mode 100644 index 6de748e..0000000 --- a/node_modules/axios/lib/helpers/readBlob.js +++ /dev/null @@ -1,15 +0,0 @@ -const {asyncIterator} = Symbol; - -const readBlob = async function* (blob) { - if (blob.stream) { - yield* blob.stream() - } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer() - } else if (blob[asyncIterator]) { - yield* blob[asyncIterator](); - } else { - yield blob; - } -} - -export default readBlob; diff --git a/node_modules/axios/lib/helpers/speedometer.js b/node_modules/axios/lib/helpers/speedometer.js deleted file mode 100644 index 3b3c666..0000000 --- a/node_modules/axios/lib/helpers/speedometer.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -export default speedometer; diff --git a/node_modules/axios/lib/helpers/spread.js b/node_modules/axios/lib/helpers/spread.js deleted file mode 100644 index 13479cb..0000000 --- a/node_modules/axios/lib/helpers/spread.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -export default function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} diff --git a/node_modules/axios/lib/helpers/throttle.js b/node_modules/axios/lib/helpers/throttle.js deleted file mode 100644 index 6969df1..0000000 --- a/node_modules/axios/lib/helpers/throttle.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - const threshold = 1000 / freq; - let timer = null; - return function throttled(force, args) { - const now = Date.now(); - if (force || now - timestamp > threshold) { - if (timer) { - clearTimeout(timer); - timer = null; - } - timestamp = now; - return fn.apply(null, args); - } - if (!timer) { - timer = setTimeout(() => { - timer = null; - timestamp = Date.now(); - return fn.apply(null, args); - }, threshold - (now - timestamp)); - } - }; -} - -export default throttle; diff --git a/node_modules/axios/lib/helpers/toFormData.js b/node_modules/axios/lib/helpers/toFormData.js deleted file mode 100644 index a41e966..0000000 --- a/node_modules/axios/lib/helpers/toFormData.js +++ /dev/null @@ -1,219 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored -import PlatformFormData from '../platform/node/classes/FormData.js'; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils.isPlainObject(thing) || utils.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (PlatformFormData || FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils.isSpecCompliantForm(formData); - - if (!utils.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils.isArray(value) && isFlatArray(value)) || - ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils.forEach(value, function each(el, key) { - const result = !(utils.isUndefined(el) || el === null) && visitor.call( - formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -export default toFormData; diff --git a/node_modules/axios/lib/helpers/toURLEncodedForm.js b/node_modules/axios/lib/helpers/toURLEncodedForm.js deleted file mode 100644 index 988a38a..0000000 --- a/node_modules/axios/lib/helpers/toURLEncodedForm.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import toFormData from './toFormData.js'; -import platform from '../platform/index.js'; - -export default function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} diff --git a/node_modules/axios/lib/helpers/validator.js b/node_modules/axios/lib/helpers/validator.js deleted file mode 100644 index 14b4696..0000000 --- a/node_modules/axios/lib/helpers/validator.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -import {VERSION} from '../env/data.js'; -import AxiosError from '../core/AxiosError.js'; - -const validators = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } -} - -export default { - assertOptions, - validators -}; diff --git a/node_modules/axios/lib/platform/browser/classes/Blob.js b/node_modules/axios/lib/platform/browser/classes/Blob.js deleted file mode 100644 index 6c506c4..0000000 --- a/node_modules/axios/lib/platform/browser/classes/Blob.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -export default typeof Blob !== 'undefined' ? Blob : null diff --git a/node_modules/axios/lib/platform/browser/classes/FormData.js b/node_modules/axios/lib/platform/browser/classes/FormData.js deleted file mode 100644 index f36d31b..0000000 --- a/node_modules/axios/lib/platform/browser/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js deleted file mode 100644 index b7dae95..0000000 --- a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; -export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/node_modules/axios/lib/platform/browser/index.js b/node_modules/axios/lib/platform/browser/index.js deleted file mode 100644 index 08c206f..0000000 --- a/node_modules/axios/lib/platform/browser/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import URLSearchParams from './classes/URLSearchParams.js' -import FormData from './classes/FormData.js' -import Blob from './classes/Blob.js' - -export default { - isBrowser: true, - classes: { - URLSearchParams, - FormData, - Blob - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; diff --git a/node_modules/axios/lib/platform/common/utils.js b/node_modules/axios/lib/platform/common/utils.js deleted file mode 100644 index 56fe79a..0000000 --- a/node_modules/axios/lib/platform/common/utils.js +++ /dev/null @@ -1,47 +0,0 @@ -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -export { - hasBrowserEnv, - hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv -} diff --git a/node_modules/axios/lib/platform/index.js b/node_modules/axios/lib/platform/index.js deleted file mode 100644 index 860ba21..0000000 --- a/node_modules/axios/lib/platform/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import platform from './node/index.js'; -import * as utils from './common/utils.js'; - -export default { - ...utils, - ...platform -} diff --git a/node_modules/axios/lib/platform/node/classes/FormData.js b/node_modules/axios/lib/platform/node/classes/FormData.js deleted file mode 100644 index b07f947..0000000 --- a/node_modules/axios/lib/platform/node/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -import FormData from 'form-data'; - -export default FormData; diff --git a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js deleted file mode 100644 index fba5842..0000000 --- a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import url from 'url'; -export default url.URLSearchParams; diff --git a/node_modules/axios/lib/platform/node/index.js b/node_modules/axios/lib/platform/node/index.js deleted file mode 100644 index aef514a..0000000 --- a/node_modules/axios/lib/platform/node/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import URLSearchParams from './classes/URLSearchParams.js' -import FormData from './classes/FormData.js' - -export default { - isNode: true, - classes: { - URLSearchParams, - FormData, - Blob: typeof Blob !== 'undefined' && Blob || null - }, - protocols: [ 'http', 'https', 'file', 'data' ] -}; diff --git a/node_modules/axios/lib/utils.js b/node_modules/axios/lib/utils.js deleted file mode 100644 index a386b77..0000000 --- a/node_modules/axios/lib/utils.js +++ /dev/null @@ -1,723 +0,0 @@ -'use strict'; - -import bind from './helpers/bind.js'; - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -} - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -} - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -} - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - } - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -} - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -} - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -} - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -} - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -} - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -} - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -} - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -} - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -} - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - } - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -} - -const noop = () => {} - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -} - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz' - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -} - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0] - } - - return str; -} - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - } - - return visit(obj, 0); -} - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -export default { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json deleted file mode 100644 index 5b3f7fb..0000000 --- a/node_modules/axios/package.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "name": "axios", - "version": "1.6.8", - "description": "Promise based HTTP client for the browser and node.js", - "main": "index.js", - "exports": { - ".": { - "types": { - "require": "./index.d.cts", - "default": "./index.d.ts" - }, - "browser": { - "require": "./dist/browser/axios.cjs", - "default": "./index.js" - }, - "default": { - "require": "./dist/node/axios.cjs", - "default": "./index.js" - } - }, - "./lib/adapters/http.js": "./lib/adapters/http.js", - "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", - "./unsafe/*": "./lib/*", - "./unsafe/core/settle.js": "./lib/core/settle.js", - "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", - "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", - "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", - "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", - "./unsafe/adapters/http.js": "./lib/adapters/http.js", - "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", - "./unsafe/utils.js": "./lib/utils.js", - "./package.json": "./package.json" - }, - "type": "module", - "types": "index.d.ts", - "scripts": { - "test": "npm run test:eslint && npm run test:mocha && npm run test:karma && npm run test:dtslint && npm run test:exports", - "test:eslint": "node bin/ssl_hotfix.js eslint lib/**/*.js", - "test:dtslint": "dtslint --localTs node_modules/typescript/lib", - "test:mocha": "node bin/ssl_hotfix.js mocha test/unit/**/*.js --timeout 30000 --exit", - "test:exports": "node bin/ssl_hotfix.js mocha test/module/test.js --timeout 30000 --exit", - "test:karma": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: karma start karma.conf.cjs --single-run", - "test:karma:firefox": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: Browsers=Firefox karma start karma.conf.cjs --single-run", - "test:karma:server": "node bin/ssl_hotfix.js cross-env karma start karma.conf.cjs", - "test:build:version": "node ./bin/check-build-version.js", - "start": "node ./sandbox/server.js", - "preversion": "gulp version", - "version": "npm run build && git add dist && git add package.json", - "prepublishOnly": "npm run test:build:version", - "postpublish": "git push && git push --tags", - "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", - "examples": "node ./examples/server.js", - "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", - "fix": "eslint --fix lib/**/*.js", - "prepare": "husky install && npm run prepare:hooks", - "prepare:hooks": "npx husky set .husky/commit-msg \"npx commitlint --edit $1\"", - "release:dry": "release-it --dry-run --no-npm", - "release:info": "release-it --release-version", - "release:beta:no-npm": "release-it --preRelease=beta --no-npm", - "release:beta": "release-it --preRelease=beta", - "release:no-npm": "release-it --no-npm", - "release:changelog:fix": "node ./bin/injectContributorsList.js && git add CHANGELOG.md", - "release": "release-it" - }, - "repository": { - "type": "git", - "url": "https://github.com/axios/axios.git" - }, - "keywords": [ - "xhr", - "http", - "ajax", - "promise", - "node" - ], - "author": "Matt Zabriskie", - "license": "MIT", - "bugs": { - "url": "https://github.com/axios/axios/issues" - }, - "homepage": "https://axios-http.com", - "devDependencies": { - "@babel/core": "^7.23.9", - "@babel/preset-env": "^7.23.9", - "@commitlint/cli": "^17.8.1", - "@commitlint/config-conventional": "^17.8.1", - "@release-it/conventional-changelog": "^5.1.1", - "@rollup/plugin-babel": "^5.3.1", - "@rollup/plugin-commonjs": "^15.1.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-multi-entry": "^4.1.0", - "@rollup/plugin-node-resolve": "^9.0.0", - "abortcontroller-polyfill": "^1.7.5", - "auto-changelog": "^2.4.0", - "body-parser": "^1.20.2", - "chalk": "^5.3.0", - "coveralls": "^3.1.1", - "cross-env": "^7.0.3", - "dev-null": "^0.1.1", - "dtslint": "^4.2.1", - "es6-promise": "^4.2.8", - "eslint": "^8.56.0", - "express": "^4.18.2", - "formdata-node": "^5.0.1", - "formidable": "^2.1.2", - "fs-extra": "^10.1.0", - "get-stream": "^3.0.0", - "gulp": "^4.0.2", - "gzip-size": "^7.0.0", - "handlebars": "^4.7.8", - "husky": "^8.0.3", - "istanbul-instrumenter-loader": "^3.0.1", - "jasmine-core": "^2.99.1", - "karma": "^6.3.17", - "karma-chrome-launcher": "^3.2.0", - "karma-firefox-launcher": "^2.1.2", - "karma-jasmine": "^1.1.2", - "karma-jasmine-ajax": "^0.1.13", - "karma-rollup-preprocessor": "^7.0.8", - "karma-safari-launcher": "^1.0.0", - "karma-sauce-launcher": "^4.3.6", - "karma-sinon": "^1.0.5", - "karma-sourcemap-loader": "^0.3.8", - "memoizee": "^0.4.15", - "minimist": "^1.2.8", - "mocha": "^10.3.0", - "multer": "^1.4.4", - "pretty-bytes": "^6.1.1", - "release-it": "^15.11.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-bundle-size": "^1.0.3", - "rollup-plugin-terser": "^7.0.2", - "sinon": "^4.5.0", - "stream-throttle": "^0.1.3", - "string-replace-async": "^3.0.2", - "terser-webpack-plugin": "^4.2.3", - "typescript": "^4.9.5" - }, - "browser": { - "./lib/adapters/http.js": "./lib/helpers/null.js", - "./lib/platform/node/index.js": "./lib/platform/browser/index.js", - "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" - }, - "jsdelivr": "dist/axios.min.js", - "unpkg": "dist/axios.min.js", - "typings": "./index.d.ts", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - }, - "bundlesize": [ - { - "path": "./dist/axios.min.js", - "threshold": "5kB" - } - ], - "contributors": [ - "Matt Zabriskie (https://github.com/mzabriskie)", - "Nick Uraltsev (https://github.com/nickuraltsev)", - "Jay (https://github.com/jasonsaayman)", - "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", - "Emily Morehouse (https://github.com/emilyemorehouse)", - "Rubén Norte (https://github.com/rubennorte)", - "Justin Beckwith (https://github.com/JustinBeckwith)", - "Martti Laine (https://github.com/codeclown)", - "Xianming Zhong (https://github.com/chinesedfan)", - "Rikki Gibson (https://github.com/RikkiGibson)", - "Remco Haszing (https://github.com/remcohaszing)", - "Yasu Flores (https://github.com/yasuf)", - "Ben Carp (https://github.com/carpben)" - ], - "sideEffects": false, - "release-it": { - "git": { - "commitMessage": "chore(release): v${version}", - "push": true, - "commit": true, - "tag": true, - "requireCommits": false, - "requireCleanWorkingDir": false - }, - "github": { - "release": true, - "draft": true - }, - "npm": { - "publish": false, - "ignoreVersion": false - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": "angular", - "infile": "CHANGELOG.md", - "header": "# Changelog" - } - }, - "hooks": { - "before:init": "npm test", - "after:bump": "gulp version --bump ${version} && npm run build && npm run test:build:version && git add ./dist && git add ./package-lock.json", - "before:release": "npm run release:changelog:fix", - "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." - } - }, - "commitlint": { - "rules": { - "header-max-length": [ - 2, - "always", - 130 - ] - }, - "extends": [ - "@commitlint/config-conventional" - ] - } -} \ No newline at end of file diff --git a/node_modules/combined-stream/License b/node_modules/combined-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/node_modules/combined-stream/Readme.md b/node_modules/combined-stream/Readme.md deleted file mode 100644 index 9e367b5..0000000 --- a/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. - -- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. - -- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/combined-stream/lib/combined_stream.js b/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 125f097..0000000 --- a/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,208 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } - - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; - -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/combined-stream/package.json b/node_modules/combined-stream/package.json deleted file mode 100644 index 6982b6d..0000000 --- a/node_modules/combined-stream/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "1.0.8", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.8" - }, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "devDependencies": { - "far": "~0.0.7" - }, - "license": "MIT" -} diff --git a/node_modules/combined-stream/yarn.lock b/node_modules/combined-stream/yarn.lock deleted file mode 100644 index 7edf418..0000000 --- a/node_modules/combined-stream/yarn.lock +++ /dev/null @@ -1,17 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -far@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" - dependencies: - oop "0.0.3" - -oop@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/node_modules/delayed-stream/.npmignore b/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/node_modules/delayed-stream/License b/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/node_modules/delayed-stream/Makefile b/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a..0000000 --- a/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/delayed-stream/Readme.md b/node_modules/delayed-stream/Readme.md deleted file mode 100644 index aca36f9..0000000 --- a/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,141 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index b38fc85..0000000 --- a/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,107 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/delayed-stream/package.json b/node_modules/delayed-stream/package.json deleted file mode 100644 index eea3291..0000000 --- a/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "contributors": [ - "Mike Atkins " - ], - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "license": "MIT", - "version": "1.0.0", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "scripts": { - "test": "make test" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - } -} diff --git a/node_modules/follow-redirects/LICENSE b/node_modules/follow-redirects/LICENSE deleted file mode 100644 index 742cbad..0000000 --- a/node_modules/follow-redirects/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh - -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/node_modules/follow-redirects/README.md b/node_modules/follow-redirects/README.md deleted file mode 100644 index eb869a6..0000000 --- a/node_modules/follow-redirects/README.md +++ /dev/null @@ -1,155 +0,0 @@ -## Follow Redirects - -Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects. - -[![npm version](https://img.shields.io/npm/v/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) -[![Build Status](https://github.com/follow-redirects/follow-redirects/workflows/CI/badge.svg)](https://github.com/follow-redirects/follow-redirects/actions) -[![Coverage Status](https://coveralls.io/repos/follow-redirects/follow-redirects/badge.svg?branch=master)](https://coveralls.io/r/follow-redirects/follow-redirects?branch=master) -[![npm downloads](https://img.shields.io/npm/dm/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) -[![Sponsor on GitHub](https://img.shields.io/static/v1?label=Sponsor&message=%F0%9F%92%96&logo=GitHub)](https://github.com/sponsors/RubenVerborgh) - -`follow-redirects` provides [request](https://nodejs.org/api/http.html#http_http_request_options_callback) and [get](https://nodejs.org/api/http.html#http_http_get_options_callback) - methods that behave identically to those found on the native [http](https://nodejs.org/api/http.html#http_http_request_options_callback) and [https](https://nodejs.org/api/https.html#https_https_request_options_callback) - modules, with the exception that they will seamlessly follow redirects. - -```javascript -const { http, https } = require('follow-redirects'); - -http.get('http://bit.ly/900913', response => { - response.on('data', chunk => { - console.log(chunk); - }); -}).on('error', err => { - console.error(err); -}); -``` - -You can inspect the final redirected URL through the `responseUrl` property on the `response`. -If no redirection happened, `responseUrl` is the original request URL. - -```javascript -const request = https.request({ - host: 'bitly.com', - path: '/UHfDGO', -}, response => { - console.log(response.responseUrl); - // 'http://duckduckgo.com/robots.txt' -}); -request.end(); -``` - -## Options -### Global options -Global options are set directly on the `follow-redirects` module: - -```javascript -const followRedirects = require('follow-redirects'); -followRedirects.maxRedirects = 10; -followRedirects.maxBodyLength = 20 * 1024 * 1024; // 20 MB -``` - -The following global options are supported: - -- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. - -- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. - -### Per-request options -Per-request options are set by passing an `options` object: - -```javascript -const url = require('url'); -const { http, https } = require('follow-redirects'); - -const options = url.parse('http://bit.ly/900913'); -options.maxRedirects = 10; -options.beforeRedirect = (options, response, request) => { - // Use this to adjust the request options upon redirecting, - // to inspect the latest response headers, - // or to cancel the request by throwing an error - - // response.headers = the redirect response headers - // response.statusCode = the redirect response code (eg. 301, 307, etc.) - - // request.url = the requested URL that resulted in a redirect - // request.headers = the headers in the request that resulted in a redirect - // request.method = the method of the request that resulted in a redirect - if (options.hostname === "example.com") { - options.auth = "user:password"; - } -}; -http.request(options); -``` - -In addition to the [standard HTTP](https://nodejs.org/api/http.html#http_http_request_options_callback) and [HTTPS options](https://nodejs.org/api/https.html#https_https_request_options_callback), -the following per-request options are supported: -- `followRedirects` (default: `true`) – whether redirects should be followed. - -- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. - -- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. - -- `beforeRedirect` (default: `undefined`) – optionally change the request `options` on redirects, or abort the request by throwing an error. - -- `agents` (default: `undefined`) – sets the `agent` option per protocol, since HTTP and HTTPS use different agents. Example value: `{ http: new http.Agent(), https: new https.Agent() }` - -- `trackRedirects` (default: `false`) – whether to store the redirected response details into the `redirects` array on the response object. - - -### Advanced usage -By default, `follow-redirects` will use the Node.js default implementations -of [`http`](https://nodejs.org/api/http.html) -and [`https`](https://nodejs.org/api/https.html). -To enable features such as caching and/or intermediate request tracking, -you might instead want to wrap `follow-redirects` around custom protocol implementations: - -```javascript -const { http, https } = require('follow-redirects').wrap({ - http: require('your-custom-http'), - https: require('your-custom-https'), -}); -``` - -Such custom protocols only need an implementation of the `request` method. - -## Browser Usage - -Due to the way the browser works, -the `http` and `https` browser equivalents perform redirects by default. - -By requiring `follow-redirects` this way: -```javascript -const http = require('follow-redirects/http'); -const https = require('follow-redirects/https'); -``` -you can easily tell webpack and friends to replace -`follow-redirect` by the built-in versions: - -```json -{ - "follow-redirects/http" : "http", - "follow-redirects/https" : "https" -} -``` - -## Contributing - -Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues) - detailing your proposal before you invest your valuable time. Additional features and bug fixes should be accompanied - by tests. You can run the test suite locally with a simple `npm test` command. - -## Debug Logging - -`follow-redirects` uses the excellent [debug](https://www.npmjs.com/package/debug) for logging. To turn on logging - set the environment variable `DEBUG=follow-redirects` for debug output from just this module. When running the test - suite it is sometimes advantageous to set `DEBUG=*` to see output from the express server as well. - -## Authors - -- [Ruben Verborgh](https://ruben.verborgh.org/) -- [Olivier Lalonde](mailto:olalonde@gmail.com) -- [James Talmage](mailto:james@talmage.io) - -## License - -[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE) diff --git a/node_modules/follow-redirects/debug.js b/node_modules/follow-redirects/debug.js deleted file mode 100644 index decb77d..0000000 --- a/node_modules/follow-redirects/debug.js +++ /dev/null @@ -1,15 +0,0 @@ -var debug; - -module.exports = function () { - if (!debug) { - try { - /* eslint global-require: off */ - debug = require("debug")("follow-redirects"); - } - catch (error) { /* */ } - if (typeof debug !== "function") { - debug = function () { /* */ }; - } - } - debug.apply(null, arguments); -}; diff --git a/node_modules/follow-redirects/http.js b/node_modules/follow-redirects/http.js deleted file mode 100644 index 695e356..0000000 --- a/node_modules/follow-redirects/http.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./").http; diff --git a/node_modules/follow-redirects/https.js b/node_modules/follow-redirects/https.js deleted file mode 100644 index d21c921..0000000 --- a/node_modules/follow-redirects/https.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./").https; diff --git a/node_modules/follow-redirects/index.js b/node_modules/follow-redirects/index.js deleted file mode 100644 index c649cab..0000000 --- a/node_modules/follow-redirects/index.js +++ /dev/null @@ -1,672 +0,0 @@ -var url = require("url"); -var URL = url.URL; -var http = require("http"); -var https = require("https"); -var Writable = require("stream").Writable; -var assert = require("assert"); -var debug = require("./debug"); - -// Whether to use the native URL object or the legacy url module -var useNativeURL = false; -try { - assert(new URL()); -} -catch (error) { - useNativeURL = error.code === "ERR_INVALID_URL"; -} - -// URL fields to preserve in copy operations -var preservedUrlFields = [ - "auth", - "host", - "hostname", - "href", - "path", - "pathname", - "port", - "protocol", - "query", - "search", - "hash", -]; - -// Create handlers that pass events from native requests -var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; -var eventHandlers = Object.create(null); -events.forEach(function (event) { - eventHandlers[event] = function (arg1, arg2, arg3) { - this._redirectable.emit(event, arg1, arg2, arg3); - }; -}); - -// Error types with codes -var InvalidUrlError = createErrorType( - "ERR_INVALID_URL", - "Invalid URL", - TypeError -); -var RedirectionError = createErrorType( - "ERR_FR_REDIRECTION_FAILURE", - "Redirected request failed" -); -var TooManyRedirectsError = createErrorType( - "ERR_FR_TOO_MANY_REDIRECTS", - "Maximum number of redirects exceeded", - RedirectionError -); -var MaxBodyLengthExceededError = createErrorType( - "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", - "Request body larger than maxBodyLength limit" -); -var WriteAfterEndError = createErrorType( - "ERR_STREAM_WRITE_AFTER_END", - "write after end" -); - -// istanbul ignore next -var destroy = Writable.prototype.destroy || noop; - -// An HTTP(S) request that can be redirected -function RedirectableRequest(options, responseCallback) { - // Initialize the request - Writable.call(this); - this._sanitizeOptions(options); - this._options = options; - this._ended = false; - this._ending = false; - this._redirectCount = 0; - this._redirects = []; - this._requestBodyLength = 0; - this._requestBodyBuffers = []; - - // Attach a callback if passed - if (responseCallback) { - this.on("response", responseCallback); - } - - // React to responses of native requests - var self = this; - this._onNativeResponse = function (response) { - try { - self._processResponse(response); - } - catch (cause) { - self.emit("error", cause instanceof RedirectionError ? - cause : new RedirectionError({ cause: cause })); - } - }; - - // Perform the first request - this._performRequest(); -} -RedirectableRequest.prototype = Object.create(Writable.prototype); - -RedirectableRequest.prototype.abort = function () { - destroyRequest(this._currentRequest); - this._currentRequest.abort(); - this.emit("abort"); -}; - -RedirectableRequest.prototype.destroy = function (error) { - destroyRequest(this._currentRequest, error); - destroy.call(this, error); - return this; -}; - -// Writes buffered data to the current native request -RedirectableRequest.prototype.write = function (data, encoding, callback) { - // Writing is not allowed if end has been called - if (this._ending) { - throw new WriteAfterEndError(); - } - - // Validate input and shift parameters if necessary - if (!isString(data) && !isBuffer(data)) { - throw new TypeError("data should be a string, Buffer or Uint8Array"); - } - if (isFunction(encoding)) { - callback = encoding; - encoding = null; - } - - // Ignore empty buffers, since writing them doesn't invoke the callback - // https://github.com/nodejs/node/issues/22066 - if (data.length === 0) { - if (callback) { - callback(); - } - return; - } - // Only write when we don't exceed the maximum body length - if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { - this._requestBodyLength += data.length; - this._requestBodyBuffers.push({ data: data, encoding: encoding }); - this._currentRequest.write(data, encoding, callback); - } - // Error when we exceed the maximum body length - else { - this.emit("error", new MaxBodyLengthExceededError()); - this.abort(); - } -}; - -// Ends the current native request -RedirectableRequest.prototype.end = function (data, encoding, callback) { - // Shift parameters if necessary - if (isFunction(data)) { - callback = data; - data = encoding = null; - } - else if (isFunction(encoding)) { - callback = encoding; - encoding = null; - } - - // Write data if needed and end - if (!data) { - this._ended = this._ending = true; - this._currentRequest.end(null, null, callback); - } - else { - var self = this; - var currentRequest = this._currentRequest; - this.write(data, encoding, function () { - self._ended = true; - currentRequest.end(null, null, callback); - }); - this._ending = true; - } -}; - -// Sets a header value on the current native request -RedirectableRequest.prototype.setHeader = function (name, value) { - this._options.headers[name] = value; - this._currentRequest.setHeader(name, value); -}; - -// Clears a header value on the current native request -RedirectableRequest.prototype.removeHeader = function (name) { - delete this._options.headers[name]; - this._currentRequest.removeHeader(name); -}; - -// Global timeout for all underlying requests -RedirectableRequest.prototype.setTimeout = function (msecs, callback) { - var self = this; - - // Destroys the socket on timeout - function destroyOnTimeout(socket) { - socket.setTimeout(msecs); - socket.removeListener("timeout", socket.destroy); - socket.addListener("timeout", socket.destroy); - } - - // Sets up a timer to trigger a timeout event - function startTimer(socket) { - if (self._timeout) { - clearTimeout(self._timeout); - } - self._timeout = setTimeout(function () { - self.emit("timeout"); - clearTimer(); - }, msecs); - destroyOnTimeout(socket); - } - - // Stops a timeout from triggering - function clearTimer() { - // Clear the timeout - if (self._timeout) { - clearTimeout(self._timeout); - self._timeout = null; - } - - // Clean up all attached listeners - self.removeListener("abort", clearTimer); - self.removeListener("error", clearTimer); - self.removeListener("response", clearTimer); - self.removeListener("close", clearTimer); - if (callback) { - self.removeListener("timeout", callback); - } - if (!self.socket) { - self._currentRequest.removeListener("socket", startTimer); - } - } - - // Attach callback if passed - if (callback) { - this.on("timeout", callback); - } - - // Start the timer if or when the socket is opened - if (this.socket) { - startTimer(this.socket); - } - else { - this._currentRequest.once("socket", startTimer); - } - - // Clean up on events - this.on("socket", destroyOnTimeout); - this.on("abort", clearTimer); - this.on("error", clearTimer); - this.on("response", clearTimer); - this.on("close", clearTimer); - - return this; -}; - -// Proxy all other public ClientRequest methods -[ - "flushHeaders", "getHeader", - "setNoDelay", "setSocketKeepAlive", -].forEach(function (method) { - RedirectableRequest.prototype[method] = function (a, b) { - return this._currentRequest[method](a, b); - }; -}); - -// Proxy all public ClientRequest properties -["aborted", "connection", "socket"].forEach(function (property) { - Object.defineProperty(RedirectableRequest.prototype, property, { - get: function () { return this._currentRequest[property]; }, - }); -}); - -RedirectableRequest.prototype._sanitizeOptions = function (options) { - // Ensure headers are always present - if (!options.headers) { - options.headers = {}; - } - - // Since http.request treats host as an alias of hostname, - // but the url module interprets host as hostname plus port, - // eliminate the host property to avoid confusion. - if (options.host) { - // Use hostname if set, because it has precedence - if (!options.hostname) { - options.hostname = options.host; - } - delete options.host; - } - - // Complete the URL object when necessary - if (!options.pathname && options.path) { - var searchPos = options.path.indexOf("?"); - if (searchPos < 0) { - options.pathname = options.path; - } - else { - options.pathname = options.path.substring(0, searchPos); - options.search = options.path.substring(searchPos); - } - } -}; - - -// Executes the next native request (initial or redirect) -RedirectableRequest.prototype._performRequest = function () { - // Load the native protocol - var protocol = this._options.protocol; - var nativeProtocol = this._options.nativeProtocols[protocol]; - if (!nativeProtocol) { - throw new TypeError("Unsupported protocol " + protocol); - } - - // If specified, use the agent corresponding to the protocol - // (HTTP and HTTPS use different types of agents) - if (this._options.agents) { - var scheme = protocol.slice(0, -1); - this._options.agent = this._options.agents[scheme]; - } - - // Create the native request and set up its event handlers - var request = this._currentRequest = - nativeProtocol.request(this._options, this._onNativeResponse); - request._redirectable = this; - for (var event of events) { - request.on(event, eventHandlers[event]); - } - - // RFC7230§5.3.1: When making a request directly to an origin server, […] - // a client MUST send only the absolute path […] as the request-target. - this._currentUrl = /^\//.test(this._options.path) ? - url.format(this._options) : - // When making a request to a proxy, […] - // a client MUST send the target URI in absolute-form […]. - this._options.path; - - // End a redirected request - // (The first request must be ended explicitly with RedirectableRequest#end) - if (this._isRedirect) { - // Write the request entity and end - var i = 0; - var self = this; - var buffers = this._requestBodyBuffers; - (function writeNext(error) { - // Only write if this request has not been redirected yet - /* istanbul ignore else */ - if (request === self._currentRequest) { - // Report any write errors - /* istanbul ignore if */ - if (error) { - self.emit("error", error); - } - // Write the next buffer if there are still left - else if (i < buffers.length) { - var buffer = buffers[i++]; - /* istanbul ignore else */ - if (!request.finished) { - request.write(buffer.data, buffer.encoding, writeNext); - } - } - // End the request if `end` has been called on us - else if (self._ended) { - request.end(); - } - } - }()); - } -}; - -// Processes a response from the current native request -RedirectableRequest.prototype._processResponse = function (response) { - // Store the redirected response - var statusCode = response.statusCode; - if (this._options.trackRedirects) { - this._redirects.push({ - url: this._currentUrl, - headers: response.headers, - statusCode: statusCode, - }); - } - - // RFC7231§6.4: The 3xx (Redirection) class of status code indicates - // that further action needs to be taken by the user agent in order to - // fulfill the request. If a Location header field is provided, - // the user agent MAY automatically redirect its request to the URI - // referenced by the Location field value, - // even if the specific status code is not understood. - - // If the response is not a redirect; return it as-is - var location = response.headers.location; - if (!location || this._options.followRedirects === false || - statusCode < 300 || statusCode >= 400) { - response.responseUrl = this._currentUrl; - response.redirects = this._redirects; - this.emit("response", response); - - // Clean up - this._requestBodyBuffers = []; - return; - } - - // The response is a redirect, so abort the current request - destroyRequest(this._currentRequest); - // Discard the remainder of the response to avoid waiting for data - response.destroy(); - - // RFC7231§6.4: A client SHOULD detect and intervene - // in cyclical redirections (i.e., "infinite" redirection loops). - if (++this._redirectCount > this._options.maxRedirects) { - throw new TooManyRedirectsError(); - } - - // Store the request headers if applicable - var requestHeaders; - var beforeRedirect = this._options.beforeRedirect; - if (beforeRedirect) { - requestHeaders = Object.assign({ - // The Host header was set by nativeProtocol.request - Host: response.req.getHeader("host"), - }, this._options.headers); - } - - // RFC7231§6.4: Automatic redirection needs to done with - // care for methods not known to be safe, […] - // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change - // the request method from POST to GET for the subsequent request. - var method = this._options.method; - if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || - // RFC7231§6.4.4: The 303 (See Other) status code indicates that - // the server is redirecting the user agent to a different resource […] - // A user agent can perform a retrieval request targeting that URI - // (a GET or HEAD request if using HTTP) […] - (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { - this._options.method = "GET"; - // Drop a possible entity and headers related to it - this._requestBodyBuffers = []; - removeMatchingHeaders(/^content-/i, this._options.headers); - } - - // Drop the Host header, as the redirect might lead to a different host - var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); - - // If the redirect is relative, carry over the host of the last request - var currentUrlParts = parseUrl(this._currentUrl); - var currentHost = currentHostHeader || currentUrlParts.host; - var currentUrl = /^\w+:/.test(location) ? this._currentUrl : - url.format(Object.assign(currentUrlParts, { host: currentHost })); - - // Create the redirected request - var redirectUrl = resolveUrl(location, currentUrl); - debug("redirecting to", redirectUrl.href); - this._isRedirect = true; - spreadUrlObject(redirectUrl, this._options); - - // Drop confidential headers when redirecting to a less secure protocol - // or to a different domain that is not a superdomain - if (redirectUrl.protocol !== currentUrlParts.protocol && - redirectUrl.protocol !== "https:" || - redirectUrl.host !== currentHost && - !isSubdomain(redirectUrl.host, currentHost)) { - removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); - } - - // Evaluate the beforeRedirect callback - if (isFunction(beforeRedirect)) { - var responseDetails = { - headers: response.headers, - statusCode: statusCode, - }; - var requestDetails = { - url: currentUrl, - method: method, - headers: requestHeaders, - }; - beforeRedirect(this._options, responseDetails, requestDetails); - this._sanitizeOptions(this._options); - } - - // Perform the redirected request - this._performRequest(); -}; - -// Wraps the key/value object of protocols with redirect functionality -function wrap(protocols) { - // Default settings - var exports = { - maxRedirects: 21, - maxBodyLength: 10 * 1024 * 1024, - }; - - // Wrap each protocol - var nativeProtocols = {}; - Object.keys(protocols).forEach(function (scheme) { - var protocol = scheme + ":"; - var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; - var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); - - // Executes a request, following redirects - function request(input, options, callback) { - // Parse parameters, ensuring that input is an object - if (isURL(input)) { - input = spreadUrlObject(input); - } - else if (isString(input)) { - input = spreadUrlObject(parseUrl(input)); - } - else { - callback = options; - options = validateUrl(input); - input = { protocol: protocol }; - } - if (isFunction(options)) { - callback = options; - options = null; - } - - // Set defaults - options = Object.assign({ - maxRedirects: exports.maxRedirects, - maxBodyLength: exports.maxBodyLength, - }, input, options); - options.nativeProtocols = nativeProtocols; - if (!isString(options.host) && !isString(options.hostname)) { - options.hostname = "::1"; - } - - assert.equal(options.protocol, protocol, "protocol mismatch"); - debug("options", options); - return new RedirectableRequest(options, callback); - } - - // Executes a GET request, following redirects - function get(input, options, callback) { - var wrappedRequest = wrappedProtocol.request(input, options, callback); - wrappedRequest.end(); - return wrappedRequest; - } - - // Expose the properties on the wrapped protocol - Object.defineProperties(wrappedProtocol, { - request: { value: request, configurable: true, enumerable: true, writable: true }, - get: { value: get, configurable: true, enumerable: true, writable: true }, - }); - }); - return exports; -} - -function noop() { /* empty */ } - -function parseUrl(input) { - var parsed; - /* istanbul ignore else */ - if (useNativeURL) { - parsed = new URL(input); - } - else { - // Ensure the URL is valid and absolute - parsed = validateUrl(url.parse(input)); - if (!isString(parsed.protocol)) { - throw new InvalidUrlError({ input }); - } - } - return parsed; -} - -function resolveUrl(relative, base) { - /* istanbul ignore next */ - return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative)); -} - -function validateUrl(input) { - if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { - throw new InvalidUrlError({ input: input.href || input }); - } - if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { - throw new InvalidUrlError({ input: input.href || input }); - } - return input; -} - -function spreadUrlObject(urlObject, target) { - var spread = target || {}; - for (var key of preservedUrlFields) { - spread[key] = urlObject[key]; - } - - // Fix IPv6 hostname - if (spread.hostname.startsWith("[")) { - spread.hostname = spread.hostname.slice(1, -1); - } - // Ensure port is a number - if (spread.port !== "") { - spread.port = Number(spread.port); - } - // Concatenate path - spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; - - return spread; -} - -function removeMatchingHeaders(regex, headers) { - var lastValue; - for (var header in headers) { - if (regex.test(header)) { - lastValue = headers[header]; - delete headers[header]; - } - } - return (lastValue === null || typeof lastValue === "undefined") ? - undefined : String(lastValue).trim(); -} - -function createErrorType(code, message, baseClass) { - // Create constructor - function CustomError(properties) { - Error.captureStackTrace(this, this.constructor); - Object.assign(this, properties || {}); - this.code = code; - this.message = this.cause ? message + ": " + this.cause.message : message; - } - - // Attach constructor and set default properties - CustomError.prototype = new (baseClass || Error)(); - Object.defineProperties(CustomError.prototype, { - constructor: { - value: CustomError, - enumerable: false, - }, - name: { - value: "Error [" + code + "]", - enumerable: false, - }, - }); - return CustomError; -} - -function destroyRequest(request, error) { - for (var event of events) { - request.removeListener(event, eventHandlers[event]); - } - request.on("error", noop); - request.destroy(error); -} - -function isSubdomain(subdomain, domain) { - assert(isString(subdomain) && isString(domain)); - var dot = subdomain.length - domain.length - 1; - return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); -} - -function isString(value) { - return typeof value === "string" || value instanceof String; -} - -function isFunction(value) { - return typeof value === "function"; -} - -function isBuffer(value) { - return typeof value === "object" && ("length" in value); -} - -function isURL(value) { - return URL && value instanceof URL; -} - -// Exports -module.exports = wrap({ http: http, https: https }); -module.exports.wrap = wrap; diff --git a/node_modules/follow-redirects/package.json b/node_modules/follow-redirects/package.json deleted file mode 100644 index 149943b..0000000 --- a/node_modules/follow-redirects/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "follow-redirects", - "version": "1.15.6", - "description": "HTTP and HTTPS modules that follow redirects.", - "license": "MIT", - "main": "index.js", - "files": [ - "*.js" - ], - "engines": { - "node": ">=4.0" - }, - "scripts": { - "lint": "eslint *.js test", - "test": "nyc mocha" - }, - "repository": { - "type": "git", - "url": "git@github.com:follow-redirects/follow-redirects.git" - }, - "homepage": "https://github.com/follow-redirects/follow-redirects", - "bugs": { - "url": "https://github.com/follow-redirects/follow-redirects/issues" - }, - "keywords": [ - "http", - "https", - "url", - "redirect", - "client", - "location", - "utility" - ], - "author": "Ruben Verborgh (https://ruben.verborgh.org/)", - "contributors": [ - "Olivier Lalonde (http://www.syskall.com)", - "James Talmage " - ], - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "peerDependenciesMeta": { - "debug": { - "optional": true - } - }, - "devDependencies": { - "concat-stream": "^2.0.0", - "eslint": "^5.16.0", - "express": "^4.16.4", - "lolex": "^3.1.0", - "mocha": "^6.0.2", - "nyc": "^14.1.1" - } -} diff --git a/node_modules/form-data/License b/node_modules/form-data/License deleted file mode 100644 index c7ff12a..0000000 --- a/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - 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/node_modules/form-data/README.md.bak b/node_modules/form-data/README.md.bak deleted file mode 100644 index 298a1a2..0000000 --- a/node_modules/form-data/README.md.bak +++ /dev/null @@ -1,358 +0,0 @@ -# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface - -[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) - -[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) -[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) - -## Install - -``` -npm install --save form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Custom options - -You can provide custom options, such as `maxDataSize`: - -``` javascript -var FormData = require('form-data'); - -var form = new FormData({ maxDataSize: 20971520 }); -form.append('my_field', 'my value'); -form.append('my_buffer', /* something big */); -``` - -List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', // ... or: - filepath: 'photos/toys/unicycle.jpg', - contentType: 'image/jpeg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Methods - -- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). -- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) -- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) -- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) -- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) -- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) -- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) -- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) -- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) -- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) - -#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) -Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. -```javascript -var form = new FormData(); -form.append( 'my_string', 'my value' ); -form.append( 'my_integer', 1 ); -form.append( 'my_boolean', true ); -form.append( 'my_buffer', new Buffer(10) ); -form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) -``` - -You may provide a string for options, or an object. -```javascript -// Set filename by providing a string for options -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); - -// provide an object. -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); -``` - -#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) -This method adds the correct `content-type` header to the provided array of `userHeaders`. - -#### _String_ getBoundary() -Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers -for example: -```javascript ---------------------------515890814546601021194782 -``` - -#### _Void_ setBoundary(String _boundary_) -Set the boundary string, overriding the default behavior described above. - -_Note: The boundary must be unique and may not appear in the data._ - -#### _Buffer_ getBuffer() -Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. -```javascript -var form = new FormData(); -form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); -form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); - -axios.post( 'https://example.com/path/to/api', - form.getBuffer(), - form.getHeaders() - ) -``` -**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. - -#### _Integer_ getLengthSync() -Same as `getLength` but synchronous. - -_Note: getLengthSync __doesn't__ calculate streams length._ - -#### _Integer_ getLength( **function** _callback_ ) -Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated -```javascript -this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - ... -}.bind(this)); -``` - -#### _Boolean_ hasKnownLength() -Checks if the length of added values is known. - -#### _Request_ submit( _params_, **function** _callback_ ) -Submit the form to a web application. -```javascript -var form = new FormData(); -form.append( 'my_string', 'Hello World' ); - -form.submit( 'http://example.com/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -} ); -``` - -#### _String_ toString() -Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -#### axios - -In Node.js you can post a file using [axios](https://github.com/axios/axios): -```javascript -const form = new FormData(); -const stream = fs.createReadStream(PATH_TO_FILE); - -form.append('image', stream); - -// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` -const formHeaders = form.getHeaders(); - -axios.post('http://example.com', form, { - headers: { - ...formHeaders, - }, -}) -.then(response => response) -.catch(error => error) -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). -- ```submit``` will not add `content-length` if form length is unknown or not calculable. -- Starting version `2.x` FormData has dropped support for `node@0.10.x`. -- Starting version `3.x` FormData has dropped support for `node@4.x`. - -## License - -Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/Readme.md b/node_modules/form-data/Readme.md deleted file mode 100644 index 298a1a2..0000000 --- a/node_modules/form-data/Readme.md +++ /dev/null @@ -1,358 +0,0 @@ -# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface - -[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) - -[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) -[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) - -## Install - -``` -npm install --save form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Custom options - -You can provide custom options, such as `maxDataSize`: - -``` javascript -var FormData = require('form-data'); - -var form = new FormData({ maxDataSize: 20971520 }); -form.append('my_field', 'my value'); -form.append('my_buffer', /* something big */); -``` - -List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', // ... or: - filepath: 'photos/toys/unicycle.jpg', - contentType: 'image/jpeg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Methods - -- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). -- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) -- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) -- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) -- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) -- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) -- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) -- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) -- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) -- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) - -#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) -Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. -```javascript -var form = new FormData(); -form.append( 'my_string', 'my value' ); -form.append( 'my_integer', 1 ); -form.append( 'my_boolean', true ); -form.append( 'my_buffer', new Buffer(10) ); -form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) -``` - -You may provide a string for options, or an object. -```javascript -// Set filename by providing a string for options -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); - -// provide an object. -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); -``` - -#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) -This method adds the correct `content-type` header to the provided array of `userHeaders`. - -#### _String_ getBoundary() -Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers -for example: -```javascript ---------------------------515890814546601021194782 -``` - -#### _Void_ setBoundary(String _boundary_) -Set the boundary string, overriding the default behavior described above. - -_Note: The boundary must be unique and may not appear in the data._ - -#### _Buffer_ getBuffer() -Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. -```javascript -var form = new FormData(); -form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); -form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); - -axios.post( 'https://example.com/path/to/api', - form.getBuffer(), - form.getHeaders() - ) -``` -**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. - -#### _Integer_ getLengthSync() -Same as `getLength` but synchronous. - -_Note: getLengthSync __doesn't__ calculate streams length._ - -#### _Integer_ getLength( **function** _callback_ ) -Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated -```javascript -this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - ... -}.bind(this)); -``` - -#### _Boolean_ hasKnownLength() -Checks if the length of added values is known. - -#### _Request_ submit( _params_, **function** _callback_ ) -Submit the form to a web application. -```javascript -var form = new FormData(); -form.append( 'my_string', 'Hello World' ); - -form.submit( 'http://example.com/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -} ); -``` - -#### _String_ toString() -Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -#### axios - -In Node.js you can post a file using [axios](https://github.com/axios/axios): -```javascript -const form = new FormData(); -const stream = fs.createReadStream(PATH_TO_FILE); - -form.append('image', stream); - -// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` -const formHeaders = form.getHeaders(); - -axios.post('http://example.com', form, { - headers: { - ...formHeaders, - }, -}) -.then(response => response) -.catch(error => error) -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). -- ```submit``` will not add `content-length` if form length is unknown or not calculable. -- Starting version `2.x` FormData has dropped support for `node@0.10.x`. -- Starting version `3.x` FormData has dropped support for `node@4.x`. - -## License - -Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/index.d.ts b/node_modules/form-data/index.d.ts deleted file mode 100644 index 295e9e9..0000000 --- a/node_modules/form-data/index.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Definitions by: Carlos Ballesteros Velasco -// Leon Yu -// BendingBender -// Maple Miao - -/// -import * as stream from 'stream'; -import * as http from 'http'; - -export = FormData; - -// Extracted because @types/node doesn't export interfaces. -interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?(this: stream.Readable, size: number): void; - destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; - autoDestroy?: boolean; -} - -interface Options extends ReadableOptions { - writable?: boolean; - readable?: boolean; - dataSize?: number; - maxDataSize?: number; - pauseStreams?: boolean; -} - -declare class FormData extends stream.Readable { - constructor(options?: Options); - append(key: string, value: any, options?: FormData.AppendOptions | string): void; - getHeaders(userHeaders?: FormData.Headers): FormData.Headers; - submit( - params: string | FormData.SubmitOptions, - callback?: (error: Error | null, response: http.IncomingMessage) => void - ): http.ClientRequest; - getBuffer(): Buffer; - setBoundary(boundary: string): void; - getBoundary(): string; - getLength(callback: (err: Error | null, length: number) => void): void; - getLengthSync(): number; - hasKnownLength(): boolean; -} - -declare namespace FormData { - interface Headers { - [key: string]: any; - } - - interface AppendOptions { - header?: string | Headers; - knownLength?: number; - filename?: string; - filepath?: string; - contentType?: string; - } - - interface SubmitOptions extends http.RequestOptions { - protocol?: 'https:' | 'http:'; - } -} diff --git a/node_modules/form-data/lib/browser.js b/node_modules/form-data/lib/browser.js deleted file mode 100644 index 09e7c70..0000000 --- a/node_modules/form-data/lib/browser.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-env browser */ -module.exports = typeof self == 'object' ? self.FormData : window.FormData; diff --git a/node_modules/form-data/lib/form_data.js b/node_modules/form-data/lib/form_data.js deleted file mode 100644 index 18dc819..0000000 --- a/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,501 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var Stream = require('stream').Stream; -var mime = require('mime-types'); -var asynckit = require('asynckit'); -var populate = require('./populate.js'); - -// Public API -module.exports = FormData; - -// make it a Stream -util.inherits(FormData, CombinedStream); - -/** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. - * - * @constructor - * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream - */ -function FormData(options) { - if (!(this instanceof FormData)) { - return new FormData(options); - } - - this._overheadLength = 0; - this._valueLength = 0; - this._valuesToMeasure = []; - - CombinedStream.call(this); - - options = options || {}; - for (var option in options) { - this[option] = options[option]; - } -} - -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData.prototype.append = function(field, value, options) { - - options = options || {}; - - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response or not a stream - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) { - return; - } - - // no need to bother with the length - if (!options.knownLength) { - this._valuesToMeasure.push(value); - } -}; - -FormData.prototype._lengthRetriever = function(value, callback) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - callback(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - callback(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - callback(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - callback(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - callback(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - callback('Unknown stream'); - } -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (typeof options.header == 'string') { - return options.header; - } - - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); - - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - - // allow custom headers. - if (typeof options.header == 'object') { - populate(headers, options.header); - } - - var header; - for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; - - // skip nullish headers. - if (header == null) { - continue; - } - - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } - - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; - -FormData.prototype._getContentDisposition = function(value, options) { - - var filename - , contentDisposition - ; - - if (typeof options.filepath === 'string') { - // custom filepath for relative paths - filename = path.normalize(options.filepath).replace(/\\/g, '/'); - } else if (options.filename || value.name || value.path) { - // custom filename take precedence - // formidable and the browser add a name property - // fs- and request- streams have path property - filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - // or try http response - filename = path.basename(value.client._httpMessage.path || ''); - } - - if (filename) { - contentDisposition = 'filename="' + filename + '"'; - } - - return contentDisposition; -}; - -FormData.prototype._getContentType = function(value, options) { - - // use custom content-type above all - var contentType = options.contentType; - - // or try `name` from formidable, browser - if (!contentType && value.name) { - contentType = mime.lookup(value.name); - } - - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } - - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } - - // or guess it from the filepath or filename - if (!contentType && (options.filepath || options.filename)) { - contentType = mime.lookup(options.filepath || options.filename); - } - - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData.DEFAULT_CONTENT_TYPE; - } - - return contentType; -}; - -FormData.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } - - return formHeaders; -}; - -FormData.prototype.setBoundary = function(boundary) { - this._boundary = boundary; -}; - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype.getBuffer = function() { - var dataBuffer = new Buffer.alloc( 0 ); - var boundary = this.getBoundary(); - - // Create the form content. Add Line breaks to the end of data. - for (var i = 0, len = this._streams.length; i < len; i++) { - if (typeof this._streams[i] !== 'function') { - - // Add content to the buffer. - if(Buffer.isBuffer(this._streams[i])) { - dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); - }else { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); - } - - // Add break after content. - if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] ); - } - } - } - - // Add the footer and return the Buffer object. - return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/form-data/form-data/issues/40 - if (!this.hasKnownLength()) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -// Public API to check if length of added values is known -// https://github.com/form-data/form-data/issues/196 -// https://github.com/form-data/form-data/issues/262 -FormData.prototype.hasKnownLength = function() { - var hasKnownLength = true; - - if (this._valuesToMeasure.length) { - hasKnownLength = false; - } - - return hasKnownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._valuesToMeasure.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname, - protocol: params.protocol - }, defaults); - - // use custom params - } else { - - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - if (err && err !== 'Unknown stream') { - this._error(err); - return; - } - - // add content length - if (length) { - request.setHeader('Content-Length', length); - } - - this.pipe(request); - if (cb) { - var onResponse; - - var callback = function (error, responce) { - request.removeListener('error', callback); - request.removeListener('response', onResponse); - - return cb.call(this, error, responce); - }; - - onResponse = callback.bind(this, null); - - request.on('error', callback); - request.on('response', onResponse); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; - -FormData.prototype.toString = function () { - return '[object FormData]'; -}; diff --git a/node_modules/form-data/lib/populate.js b/node_modules/form-data/lib/populate.js deleted file mode 100644 index 4d35738..0000000 --- a/node_modules/form-data/lib/populate.js +++ /dev/null @@ -1,10 +0,0 @@ -// populates missing values -module.exports = function(dst, src) { - - Object.keys(src).forEach(function(prop) - { - dst[prop] = dst[prop] || src[prop]; - }); - - return dst; -}; diff --git a/node_modules/form-data/package.json b/node_modules/form-data/package.json deleted file mode 100644 index 0f20240..0000000 --- a/node_modules/form-data/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "name": "form-data", - "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "4.0.0", - "repository": { - "type": "git", - "url": "git://github.com/form-data/form-data.git" - }, - "main": "./lib/form_data", - "browser": "./lib/browser", - "typings": "./index.d.ts", - "scripts": { - "pretest": "rimraf coverage test/tmp", - "test": "istanbul cover test/run.js", - "posttest": "istanbul report lcov text", - "lint": "eslint lib/*.js test/*.js test/integration/*.js", - "report": "istanbul report lcov text", - "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", - "ci-test": "npm run test && npm run browser && npm run report", - "predebug": "rimraf coverage test/tmp", - "debug": "verbose=1 ./test/run.js", - "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", - "check": "istanbul check-coverage coverage/coverage*.json", - "files": "pkgfiles --sort=name", - "get-version": "node -e \"console.log(require('./package.json').version)\"", - "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", - "restore-readme": "mv README.md.bak README.md", - "prepublish": "in-publish && npm run update-readme || not-in-publish", - "postpublish": "npm run restore-readme" - }, - "pre-commit": [ - "lint", - "ci-test", - "check" - ], - "engines": { - "node": ">= 6" - }, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "devDependencies": { - "@types/node": "^12.0.10", - "browserify": "^13.1.1", - "browserify-istanbul": "^2.0.0", - "coveralls": "^3.0.4", - "cross-spawn": "^6.0.5", - "eslint": "^6.0.1", - "fake": "^0.2.2", - "far": "^0.0.7", - "formidable": "^1.0.17", - "in-publish": "^2.0.0", - "is-node-modern": "^1.0.0", - "istanbul": "^0.4.5", - "obake": "^0.1.2", - "puppeteer": "^1.19.0", - "pkgfiles": "^2.3.0", - "pre-commit": "^1.1.3", - "request": "^2.88.0", - "rimraf": "^2.7.1", - "tape": "^4.6.2", - "typescript": "^3.5.2" - }, - "license": "MIT" -} diff --git a/node_modules/mime-db/HISTORY.md b/node_modules/mime-db/HISTORY.md deleted file mode 100644 index 7436f64..0000000 --- a/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,507 +0,0 @@ -1.52.0 / 2022-02-21 -=================== - - * Add extensions from IANA for more `image/*` types - * Add extension `.asc` to `application/pgp-keys` - * Add extensions to various XML types - * Add new upstream MIME types - -1.51.0 / 2021-11-08 -=================== - - * Add new upstream MIME types - * Mark `image/vnd.microsoft.icon` as compressible - * Mark `image/vnd.ms-dds` as compressible - -1.50.0 / 2021-09-15 -=================== - - * Add deprecated iWorks mime types and extensions - * Add new upstream MIME types - -1.49.0 / 2021-07-26 -=================== - - * Add extension `.trig` to `application/trig` - * Add new upstream MIME types - -1.48.0 / 2021-05-30 -=================== - - * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - * Add new upstream MIME types - * Mark `text/yaml` as compressible - -1.47.0 / 2021-04-01 -=================== - - * Add new upstream MIME types - * Remove ambigious extensions from IANA for `application/*+xml` types - * Update primary extension to `.es` for `application/ecmascript` - -1.46.0 / 2021-02-13 -=================== - - * Add extension `.amr` to `audio/amr` - * Add extension `.m4s` to `video/iso.segment` - * Add extension `.opus` to `audio/ogg` - * Add new upstream MIME types - -1.45.0 / 2020-09-22 -=================== - - * Add `application/ubjson` with extension `.ubj` - * Add `image/avif` with extension `.avif` - * Add `image/ktx2` with extension `.ktx2` - * Add extension `.dbf` to `application/vnd.dbf` - * Add extension `.rar` to `application/vnd.rar` - * Add extension `.td` to `application/urc-targetdesc+xml` - * Add new upstream MIME types - * Fix extension of `application/vnd.apple.keynote` to be `.key` - -1.44.0 / 2020-04-22 -=================== - - * Add charsets from IANA - * Add extension `.cjs` to `application/node` - * Add new upstream MIME types - -1.43.0 / 2020-01-05 -=================== - - * Add `application/x-keepass2` with extension `.kdbx` - * Add extension `.mxmf` to `audio/mobile-xmf` - * Add extensions from IANA for `application/*+xml` types - * Add new upstream MIME types - -1.42.0 / 2019-09-25 -=================== - - * Add `image/vnd.ms-dds` with extension `.dds` - * Add new upstream MIME types - * Remove compressible from `multipart/mixed` - -1.41.0 / 2019-08-30 -=================== - - * Add new upstream MIME types - * Add `application/toml` with extension `.toml` - * Mark `font/ttf` as compressible - -1.40.0 / 2019-04-20 -=================== - - * Add extensions from IANA for `model/*` types - * Add `text/mdx` with extension `.mdx` - -1.39.0 / 2019-04-04 -=================== - - * Add extensions `.siv` and `.sieve` to `application/sieve` - * Add new upstream MIME types - -1.38.0 / 2019-02-04 -=================== - - * Add extension `.nq` to `application/n-quads` - * Add extension `.nt` to `application/n-triples` - * Add new upstream MIME types - * Mark `text/less` as compressible - -1.37.0 / 2018-10-19 -=================== - - * Add extensions to HEIC image types - * Add new upstream MIME types - -1.36.0 / 2018-08-20 -=================== - - * Add Apple file extensions from IANA - * Add extensions from IANA for `image/*` types - * Add new upstream MIME types - -1.35.0 / 2018-07-15 -=================== - - * Add extension `.owl` to `application/rdf+xml` - * Add new upstream MIME types - - Removes extension `.woff` from `application/font-woff` - -1.34.0 / 2018-06-03 -=================== - - * Add extension `.csl` to `application/vnd.citationstyles.style+xml` - * Add extension `.es` to `application/ecmascript` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/turtle` - * Mark all XML-derived types as compressible - -1.33.0 / 2018-02-15 -=================== - - * Add extensions from IANA for `message/*` types - * Add new upstream MIME types - * Fix some incorrect OOXML types - * Remove `application/font-woff2` - -1.32.0 / 2017-11-29 -=================== - - * Add new upstream MIME types - * Update `text/hjson` to registered `application/hjson` - * Add `text/shex` with extension `.shex` - -1.31.0 / 2017-10-25 -=================== - - * Add `application/raml+yaml` with extension `.raml` - * Add `application/wasm` with extension `.wasm` - * Add new `font` type from IANA - * Add new upstream font extensions - * Add new upstream MIME types - * Add extensions for JPEG-2000 images - -1.30.0 / 2017-08-27 -=================== - - * Add `application/vnd.ms-outlook` - * Add `application/x-arj` - * Add extension `.mjs` to `application/javascript` - * Add glTF types and extensions - * Add new upstream MIME types - * Add `text/x-org` - * Add VirtualBox MIME types - * Fix `source` records for `video/*` types that are IANA - * Update `font/opentype` to registered `font/otf` - -1.29.0 / 2017-07-10 -=================== - - * Add `application/fido.trusted-apps+json` - * Add extension `.wadl` to `application/vnd.sun.wadl+xml` - * Add new upstream MIME types - * Add `UTF-8` as default charset for `text/css` - -1.28.0 / 2017-05-14 -=================== - - * Add new upstream MIME types - * Add extension `.gz` to `application/gzip` - * Update extensions `.md` and `.markdown` to be `text/markdown` - -1.27.0 / 2017-03-16 -=================== - - * Add new upstream MIME types - * Add `image/apng` with extension `.apng` - -1.26.0 / 2017-01-14 -=================== - - * Add new upstream MIME types - * Add extension `.geojson` to `application/geo+json` - -1.25.0 / 2016-11-11 -=================== - - * Add new upstream MIME types - -1.24.0 / 2016-09-18 -=================== - - * Add `audio/mp3` - * Add new upstream MIME types - -1.23.0 / 2016-05-01 -=================== - - * Add new upstream MIME types - * Add extension `.3gpp` to `audio/3gpp` - -1.22.0 / 2016-02-15 -=================== - - * Add `text/slim` - * Add extension `.rng` to `application/xml` - * Add new upstream MIME types - * Fix extension of `application/dash+xml` to be `.mpd` - * Update primary extension to `.m4a` for `audio/mp4` - -1.21.0 / 2016-01-06 -=================== - - * Add Google document types - * Add new upstream MIME types - -1.20.0 / 2015-11-10 -=================== - - * Add `text/x-suse-ymp` - * Add new upstream MIME types - -1.19.0 / 2015-09-17 -=================== - - * Add `application/vnd.apple.pkpass` - * Add new upstream MIME types - -1.18.0 / 2015-09-03 -=================== - - * Add new upstream MIME types - -1.17.0 / 2015-08-13 -=================== - - * Add `application/x-msdos-program` - * Add `audio/g711-0` - * Add `image/vnd.mozilla.apng` - * Add extension `.exe` to `application/x-msdos-program` - -1.16.0 / 2015-07-29 -=================== - - * Add `application/vnd.uri-map` - -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/node_modules/mime-db/LICENSE b/node_modules/mime-db/LICENSE deleted file mode 100644 index 0751cb1..0000000 --- a/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015-2022 Douglas Christopher Wilson - -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/node_modules/mime-db/README.md b/node_modules/mime-db/README.md deleted file mode 100644 index 5a8fcfe..0000000 --- a/node_modules/mime-db/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][ci-image]][ci-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a large database of mime types and information about them. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to -replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) -as the JSON format may change in the future. - -``` -https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json -``` - -## Usage - -```js -var db = require('mime-db') - -// grab data on .js files -var data = db['application/javascript'] -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Contributing - -To edit the database, only make PRs against `src/custom-types.json` or -`src/custom-suffix.json`. - -The `src/custom-types.json` file is a JSON object with the MIME type as the -keys and the values being an object with the following keys: - -- `compressible` - leave out if you don't know, otherwise `true`/`false` to - indicate whether the data represented by the type is typically compressible. -- `extensions` - include an array of file extensions that are associated with - the type. -- `notes` - human-readable notes about the type, typically what the type is. -- `sources` - include an array of URLs of where the MIME type and the associated - extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); - links to type aggregating sites and Wikipedia are _not acceptable_. - -To update the build, run `npm run build`. - -### Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -If that is not possible / feasible, they can be added directly here as a -"custom" type. To do this, it is required to have a primary source that -definitively lists the media type. If an extension is going to be listed as -associateed with this media type, the source must definitively link the -media type and extension as well. - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci -[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://badgen.net/npm/node/mime-db -[node-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-db -[npm-url]: https://npmjs.org/package/mime-db -[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/node_modules/mime-db/db.json b/node_modules/mime-db/db.json deleted file mode 100644 index eb9c42c..0000000 --- a/node_modules/mime-db/db.json +++ /dev/null @@ -1,8519 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/3gpp-ims+xml": { - "source": "iana", - "compressible": true - }, - "application/3gpphal+json": { - "source": "iana", - "compressible": true - }, - "application/3gpphalforms+json": { - "source": "iana", - "compressible": true - }, - "application/a2l": { - "source": "iana" - }, - "application/ace+cbor": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/activity+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamcontrol+json": { - "source": "iana", - "compressible": true - }, - "application/alto-updatestreamparams+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/at+jwt": { - "source": "iana" - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomdeleted"] - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atomsvc"] - }, - "application/atsc-dwd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dwd"] - }, - "application/atsc-dynamic-event-message": { - "source": "iana" - }, - "application/atsc-held+xml": { - "source": "iana", - "compressible": true, - "extensions": ["held"] - }, - "application/atsc-rdt+json": { - "source": "iana", - "compressible": true - }, - "application/atsc-rsat+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsat"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana", - "compressible": true - }, - "application/bacnet-xdd+zip": { - "source": "iana", - "compressible": false - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xcs"] - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/captive+json": { - "source": "iana", - "compressible": true - }, - "application/cbor": { - "source": "iana" - }, - "application/cbor-seq": { - "source": "iana" - }, - "application/cccex": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana", - "compressible": true - }, - "application/ccxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdfx"] - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cdni": { - "source": "iana" - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana", - "compressible": true - }, - "application/cellml+xml": { - "source": "iana", - "compressible": true - }, - "application/cfw": { - "source": "iana" - }, - "application/city+json": { - "source": "iana", - "compressible": true - }, - "application/clr": { - "source": "iana" - }, - "application/clue+xml": { - "source": "iana", - "compressible": true - }, - "application/clue_info+xml": { - "source": "iana", - "compressible": true - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana", - "compressible": true - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/coap-payload": { - "source": "iana" - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/cose": { - "source": "iana" - }, - "application/cose-key": { - "source": "iana" - }, - "application/cose-key-set": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cpl"] - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana", - "compressible": true - }, - "application/cstadata+xml": { - "source": "iana", - "compressible": true - }, - "application/csvm+json": { - "source": "iana", - "compressible": true - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cwt": { - "source": "iana" - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpd"] - }, - "application/dash-patch+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "compressible": true, - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana", - "compressible": true - }, - "application/dicom": { - "source": "iana" - }, - "application/dicom+json": { - "source": "iana", - "compressible": true - }, - "application/dicom+xml": { - "source": "iana", - "compressible": true - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/dns+json": { - "source": "iana", - "compressible": true - }, - "application/dns-message": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dbk"] - }, - "application/dots+cbor": { - "source": "iana" - }, - "application/dskpp+xml": { - "source": "iana", - "compressible": true - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["es","ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/efi": { - "source": "iana" - }, - "application/elm+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/elm+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.cap+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/emergencycalldata.comment+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.control+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.deviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.ecall.msd": { - "source": "iana" - }, - "application/emergencycalldata.providerinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.serviceinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.subscriberinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/emergencycalldata.veds+xml": { - "source": "iana", - "compressible": true - }, - "application/emma+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["emotionml"] - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana", - "compressible": true - }, - "application/epub+zip": { - "source": "iana", - "compressible": false, - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/expect-ct-report+json": { - "source": "iana", - "compressible": true - }, - "application/express": { - "source": "iana", - "extensions": ["exp"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fdt"] - }, - "application/fhir+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fhir+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/fido.trusted-apps+json": { - "compressible": true - }, - "application/fits": { - "source": "iana" - }, - "application/flexfec": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false - }, - "application/framework-attributes+xml": { - "source": "iana", - "compressible": true - }, - "application/geo+json": { - "source": "iana", - "compressible": true, - "extensions": ["geojson"] - }, - "application/geo+json-seq": { - "source": "iana" - }, - "application/geopackage+sqlite3": { - "source": "iana" - }, - "application/geoxacml+xml": { - "source": "iana", - "compressible": true - }, - "application/gltf-buffer": { - "source": "iana" - }, - "application/gml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false, - "extensions": ["gz"] - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana", - "compressible": true - }, - "application/hjson": { - "extensions": ["hjson"] - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pkg-reply+xml": { - "source": "iana", - "compressible": true - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana", - "compressible": true, - "extensions": ["its"] - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js","mjs"] - }, - "application/jf2feed+json": { - "source": "iana", - "compressible": true - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/jscalendar+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana", - "compressible": true - }, - "application/kpml-response+xml": { - "source": "iana", - "compressible": true - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/lgr+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lgr"] - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana", - "compressible": true - }, - "application/lost+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana", - "compressible": true - }, - "application/lpf+zip": { - "source": "iana", - "compressible": false - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mads"] - }, - "application/manifest+json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana", - "compressible": true - }, - "application/mathml-presentation+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-deregister+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-envelope+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-msk-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-protection-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-reception-report+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-register-response+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-schedule+xml": { - "source": "iana", - "compressible": true - }, - "application/mbms-user-service-description+xml": { - "source": "iana", - "compressible": true - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpf"] - }, - "application/media_control+xml": { - "source": "iana", - "compressible": true - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "compressible": true, - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "compressible": true, - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mipc": { - "source": "iana" - }, - "application/missing-blocks+cbor-seq": { - "source": "iana" - }, - "application/mmt-aei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["maei"] - }, - "application/mmt-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musd"] - }, - "application/mods+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana", - "compressible": true - }, - "application/mrb-publish+xml": { - "source": "iana", - "compressible": true - }, - "application/msc-ivr+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msc-mixer+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mud+json": { - "source": "iana", - "compressible": true - }, - "application/multipart-core": { - "source": "iana" - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/n-quads": { - "source": "iana", - "extensions": ["nq"] - }, - "application/n-triples": { - "source": "iana", - "extensions": ["nt"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-groupinfo": { - "source": "iana", - "charset": "US-ASCII" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana", - "compressible": true - }, - "application/node": { - "source": "iana", - "extensions": ["cjs"] - }, - "application/nss": { - "source": "iana" - }, - "application/oauth-authz-req+jwt": { - "source": "iana" - }, - "application/oblivious-dns-message": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odm+xml": { - "source": "iana", - "compressible": true - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/opc-nodeset+xml": { - "source": "iana", - "compressible": true - }, - "application/oscore": { - "source": "iana" - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p21": { - "source": "iana" - }, - "application/p21+zip": { - "source": "iana", - "compressible": false - }, - "application/p2p-overlay+xml": { - "source": "iana", - "compressible": true, - "extensions": ["relo"] - }, - "application/parityfec": { - "source": "iana" - }, - "application/passport": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pem-certificate-chain": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana", - "extensions": ["asc"] - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pidf-diff+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs12": { - "source": "iana" - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkcs8-encrypted": { - "source": "iana" - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/ppsp-tracker+json": { - "source": "iana", - "compressible": true - }, - "application/problem+json": { - "source": "iana", - "compressible": true - }, - "application/problem+xml": { - "source": "iana", - "compressible": true - }, - "application/provenance+xml": { - "source": "iana", - "compressible": true, - "extensions": ["provx"] - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.cyn": { - "source": "iana", - "charset": "7-BIT" - }, - "application/prs.hpub+zip": { - "source": "iana", - "compressible": false - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana", - "compressible": true - }, - "application/pskc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["pskcxml"] - }, - "application/pvd+json": { - "source": "iana", - "compressible": true - }, - "application/qsig": { - "source": "iana" - }, - "application/raml+yaml": { - "compressible": true, - "extensions": ["raml"] - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf","owl"] - }, - "application/reginfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rld"] - }, - "application/rfc+xml": { - "source": "iana", - "compressible": true - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana", - "compressible": true - }, - "application/rls-services+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rs"] - }, - "application/route-apd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rapd"] - }, - "application/route-s-tsid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sls"] - }, - "application/route-usd+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rusd"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-publication": { - "source": "iana" - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana", - "compressible": true - }, - "application/samlmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/sarif+json": { - "source": "iana", - "compressible": true - }, - "application/sarif-external-properties+json": { - "source": "iana", - "compressible": true - }, - "application/sbe": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana", - "compressible": true - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/secevent+jwt": { - "source": "iana" - }, - "application/senml+cbor": { - "source": "iana" - }, - "application/senml+json": { - "source": "iana", - "compressible": true - }, - "application/senml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["senmlx"] - }, - "application/senml-etch+cbor": { - "source": "iana" - }, - "application/senml-etch+json": { - "source": "iana", - "compressible": true - }, - "application/senml-exi": { - "source": "iana" - }, - "application/sensml+cbor": { - "source": "iana" - }, - "application/sensml+json": { - "source": "iana", - "compressible": true - }, - "application/sensml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sensmlx"] - }, - "application/sensml-exi": { - "source": "iana" - }, - "application/sep+xml": { - "source": "iana", - "compressible": true - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana", - "extensions": ["siv","sieve"] - }, - "application/simple-filter+xml": { - "source": "iana", - "compressible": true - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/sipc": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "compressible": true, - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "compressible": true, - "extensions": ["srx"] - }, - "application/spdx+json": { - "source": "iana", - "compressible": true - }, - "application/spirits-event+xml": { - "source": "iana", - "compressible": true - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ssml"] - }, - "application/stix+json": { - "source": "iana", - "compressible": true - }, - "application/swid+xml": { - "source": "iana", - "compressible": true, - "extensions": ["swidtag"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/taxii+json": { - "source": "iana", - "compressible": true - }, - "application/td+json": { - "source": "iana", - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tei","teicorpus"] - }, - "application/tetra_isi": { - "source": "iana" - }, - "application/thraud+xml": { - "source": "iana", - "compressible": true, - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/tlsrpt+gzip": { - "source": "iana" - }, - "application/tlsrpt+json": { - "source": "iana", - "compressible": true - }, - "application/tnauthlist": { - "source": "iana" - }, - "application/token-introspection+jwt": { - "source": "iana" - }, - "application/toml": { - "compressible": true, - "extensions": ["toml"] - }, - "application/trickle-ice-sdpfrag": { - "source": "iana" - }, - "application/trig": { - "source": "iana", - "extensions": ["trig"] - }, - "application/ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ttml"] - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/tzif": { - "source": "iana" - }, - "application/tzif-leap": { - "source": "iana" - }, - "application/ubjson": { - "compressible": false, - "extensions": ["ubj"] - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/urc-ressheet+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rsheet"] - }, - "application/urc-targetdesc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["td"] - }, - "application/urc-uisocketdesc+xml": { - "source": "iana", - "compressible": true - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana", - "compressible": true - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.1000minds.decision-model+xml": { - "source": "iana", - "compressible": true, - "extensions": ["1km"] - }, - "application/vnd.3gpp-prose+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-prose-pc3ch+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp-v2x-local-service-information": { - "source": "iana" - }, - "application/vnd.3gpp.5gnas": { - "source": "iana" - }, - "application/vnd.3gpp.access-transfer-events+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gmop+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.gtpc": { - "source": "iana" - }, - "application/vnd.3gpp.interworking-data": { - "source": "iana" - }, - "application/vnd.3gpp.lpp": { - "source": "iana" - }, - "application/vnd.3gpp.mc-signalling-ear": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-payload": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-signalling": { - "source": "iana" - }, - "application/vnd.3gpp.mcdata-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcdata-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-floor-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-signed+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-ue-init-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcptt-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-affiliation-command+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-affiliation-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-location-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-service-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-transmission-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-ue-config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mcvideo-user-profile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.mid-call+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ngap": { - "source": "iana" - }, - "application/vnd.3gpp.pfcp": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.s1ap": { - "source": "iana" - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.sms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-ext+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.srvcc-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.state-and-event-info+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3lightssoftware.imagescal": { - "source": "iana" - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "compressible": false, - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata": { - "source": "iana" - }, - "application/vnd.afpc.afplinedata-pagedef": { - "source": "iana" - }, - "application/vnd.afpc.cmoca-cmresource": { - "source": "iana" - }, - "application/vnd.afpc.foca-charset": { - "source": "iana" - }, - "application/vnd.afpc.foca-codedfont": { - "source": "iana" - }, - "application/vnd.afpc.foca-codepage": { - "source": "iana" - }, - "application/vnd.afpc.modca": { - "source": "iana" - }, - "application/vnd.afpc.modca-cmtable": { - "source": "iana" - }, - "application/vnd.afpc.modca-formdef": { - "source": "iana" - }, - "application/vnd.afpc.modca-mediummap": { - "source": "iana" - }, - "application/vnd.afpc.modca-objectcontainer": { - "source": "iana" - }, - "application/vnd.afpc.modca-overlay": { - "source": "iana" - }, - "application/vnd.afpc.modca-pagesegment": { - "source": "iana" - }, - "application/vnd.age": { - "source": "iana", - "extensions": ["age"] - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amadeus+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.amazon.mobi8-ebook": { - "source": "iana" - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.android.ota": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anki": { - "source": "iana" - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.arrow.file": { - "source": "iana" - }, - "application/vnd.apache.arrow.stream": { - "source": "iana" - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.aplextor.warrp+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apothekende.reservation+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mpkg"] - }, - "application/vnd.apple.keynote": { - "source": "iana", - "extensions": ["key"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.apple.numbers": { - "source": "iana", - "extensions": ["numbers"] - }, - "application/vnd.apple.pages": { - "source": "iana", - "extensions": ["pages"] - }, - "application/vnd.apple.pkpass": { - "compressible": false, - "extensions": ["pkpass"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artisan+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avalon+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.avistar+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["bmml"] - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.banana-accounting": { - "source": "iana" - }, - "application/vnd.bbf.usp.error": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg": { - "source": "iana" - }, - "application/vnd.bbf.usp.msg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.bint.med-content": { - "source": "iana" - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.blink-idb-value-wrapper": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.bpf": { - "source": "iana" - }, - "application/vnd.bpf3": { - "source": "iana" - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.byu.uapi+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.capasystems-pg+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "compressible": true, - "extensions": ["cdxml"] - }, - "application/vnd.chess-pgn": { - "source": "iana" - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.ciedi": { - "source": "iana" - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana", - "compressible": true, - "extensions": ["csl"] - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.document-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.presentation-template": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet": { - "source": "iana" - }, - "application/vnd.collabio.xodocuments.spreadsheet-template": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.comicbook+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.comicbook-rar": { - "source": "iana" - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.coreos.ignition+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wbs"] - }, - "application/vnd.cryptii.pipe+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.crypto-shade-file": { - "source": "iana" - }, - "application/vnd.cryptomator.encrypted": { - "source": "iana" - }, - "application/vnd.cryptomator.vault": { - "source": "iana" - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.cyclonedx+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.cyclonedx+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.d2l.coursepackage1p0+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.d3m-dataset": { - "source": "iana" - }, - "application/vnd.d3m-problem": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.datapackage+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dataresource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dbf": { - "source": "iana", - "extensions": ["dbf"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume.movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.drive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbisl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecip.rlp": { - "source": "iana" - }, - "application/vnd.eclipse.ditto+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.efi.img": { - "source": "iana" - }, - "application/vnd.efi.iso": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.espass-espass+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "compressible": true, - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.etsi.cug+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.sci+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eu.kasparian.car+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.evolv.ecig.profile": { - "source": "iana" - }, - "application/vnd.evolv.ecig.settings": { - "source": "iana" - }, - "application/vnd.evolv.ecig.theme": { - "source": "iana" - }, - "application/vnd.exstream-empower+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.exstream-package": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.familysearch.gedcom+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.ficlab.flb+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.filmit.zfc": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.firemonkeys.cloudcell": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujifilm.fb.docuworks": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.binder": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujifilm.fb.jfi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.futoin+cbor": { - "source": "iana" - }, - "application/vnd.futoin+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.gentics.grd+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.slides": { - "source": "iana" - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-apps.document": { - "compressible": false, - "extensions": ["gdoc"] - }, - "application/vnd.google-apps.presentation": { - "compressible": false, - "extensions": ["gslides"] - }, - "application/vnd.google-apps.spreadsheet": { - "compressible": false, - "extensions": ["gsheet"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "compressible": true, - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.hdt": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hl7cda+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.hl7v2+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyper+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyper-item+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.imagemeter.folder+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.imagemeter.image+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "compressible": true, - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.iso11783-10+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las": { - "source": "iana" - }, - "application/vnd.las.las+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.las.las+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lasxml"] - }, - "application/vnd.laszip": { - "source": "iana" - }, - "application/vnd.leap+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.liberty-request+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "compressible": true, - "extensions": ["lbe"] - }, - "application/vnd.logipipe.circuit+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.loom": { - "source": "iana" - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.mapbox-vector-tile": { - "source": "iana", - "extensions": ["mvt"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxar.archive.3tz+zip": { - "source": "iana", - "compressible": false - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.microsoft.windows.thumbnail-cache": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-outlook": { - "compressible": false, - "extensions": ["msg"] - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printdevicecapabilities+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-printschematicket+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.devicepairing": { - "source": "iana" - }, - "application/vnd.ms-windows.nwprinting.oob": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-windows.wsd.oob": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.nacamar.ybrid+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nearst.inv+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.nebumind.line": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nimn": { - "source": "iana" - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana", - "compressible": true, - "extensions": ["ac"] - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.ocf+cbor": { - "source": "iana" - }, - "application/vnd.oci.image.manifest.v1+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+cbor": { - "source": "iana" - }, - "application/vnd.oma.lwm2m+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.lwm2m+tlv": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.omads-email+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-file+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omads-folder+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.onepager": { - "source": "iana" - }, - "application/vnd.onepagertamp": { - "source": "iana" - }, - "application/vnd.onepagertamx": { - "source": "iana" - }, - "application/vnd.onepagertat": { - "source": "iana" - }, - "application/vnd.onepagertatp": { - "source": "iana" - }, - "application/vnd.onepagertatx": { - "source": "iana" - }, - "application/vnd.openblox.game+xml": { - "source": "iana", - "compressible": true, - "extensions": ["obgx"] - }, - "application/vnd.openblox.game-binary": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openstreetmap.data+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osm"] - }, - "application/vnd.opentimestamps.ots": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "iana", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "iana", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "iana", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.oxli.countgraph": { - "source": "iana" - }, - "application/vnd.pagerduty+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "iana" - }, - "application/vnd.patentdive": { - "source": "iana" - }, - "application/vnd.patientecommsdoc": { - "source": "iana" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.psfs": { - "source": "iana" - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quarantainenet": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.rar": { - "source": "iana", - "extensions": ["rar"] - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.resilient.logic": { - "source": "iana" - }, - "application/vnd.restful+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "compressible": true, - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sar": { - "source": "iana" - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.seis+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shade-save-file": { - "source": "iana" - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.shootproof+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shopkick+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.shp": { - "source": "iana" - }, - "application/vnd.shx": { - "source": "iana" - }, - "application/vnd.sigrok.session": { - "source": "iana" - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.snesdev-page-table": { - "source": "iana" - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana", - "compressible": true, - "extensions": ["fo"] - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "compressible": true, - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sqlite3": { - "source": "iana" - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wadl"] - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.sycle+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.syft+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["ddf"] - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana", - "charset": "UTF-8", - "compressible": true - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tableschema+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.think-cell.ppttc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.tml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.tri.onesource": { - "source": "iana" - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.uri-map": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.vel+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.veritone.aion+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.veryant.thin": { - "source": "iana" - }, - "application/vnd.ves.encrypted": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.dpp": { - "source": "iana" - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.wv.ssp+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana", - "compressible": true - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.youtube.yt": { - "source": "iana" - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "compressible": true, - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["vxml"] - }, - "application/voucher-cms+json": { - "source": "iana", - "compressible": true - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/wasm": { - "source": "iana", - "compressible": true, - "extensions": ["wasm"] - }, - "application/watcherinfo+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wif"] - }, - "application/webpush-options+json": { - "source": "iana", - "compressible": true - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "compressible": true, - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-arj": { - "compressible": false, - "extensions": ["arj"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "compressible": true, - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "compressible": true, - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "compressible": true, - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-iwork-keynote-sffkey": { - "extensions": ["key"] - }, - "application/x-iwork-numbers-sffnumbers": { - "extensions": ["numbers"] - }, - "application/x-iwork-pages-sffpages": { - "extensions": ["pages"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-keepass2": { - "extensions": ["kdbx"] - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdos-program": { - "extensions": ["exe"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-pki-message": { - "source": "iana" - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-virtualbox-hdd": { - "compressible": true, - "extensions": ["hdd"] - }, - "application/x-virtualbox-ova": { - "compressible": true, - "extensions": ["ova"] - }, - "application/x-virtualbox-ovf": { - "compressible": true, - "extensions": ["ovf"] - }, - "application/x-virtualbox-vbox": { - "compressible": true, - "extensions": ["vbox"] - }, - "application/x-virtualbox-vbox-extpack": { - "compressible": false, - "extensions": ["vbox-extpack"] - }, - "application/x-virtualbox-vdi": { - "compressible": true, - "extensions": ["vdi"] - }, - "application/x-virtualbox-vhd": { - "compressible": true, - "extensions": ["vhd"] - }, - "application/x-virtualbox-vmdk": { - "compressible": true, - "extensions": ["vmdk"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "iana", - "extensions": ["der","crt","pem"] - }, - "application/x-x509-ca-ra-cert": { - "source": "iana" - }, - "application/x-x509-next-ca-cert": { - "source": "iana" - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana", - "compressible": true - }, - "application/xaml+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xav"] - }, - "application/xcap-caps+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xca"] - }, - "application/xcap-diff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xel"] - }, - "application/xcap-error+xml": { - "source": "iana", - "compressible": true - }, - "application/xcap-ns+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xns"] - }, - "application/xcon-conference-info+xml": { - "source": "iana", - "compressible": true - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana", - "compressible": true - }, - "application/xenc+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache", - "compressible": true - }, - "application/xliff+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xlf"] - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd","rng"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/xmpp+xml": { - "source": "iana", - "compressible": true - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xsl","xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "compressible": true, - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "compressible": true, - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yang-data+json": { - "source": "iana", - "compressible": true - }, - "application/yang-data+xml": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+json": { - "source": "iana", - "compressible": true - }, - "application/yang-patch+xml": { - "source": "iana", - "compressible": true - }, - "application/yin+xml": { - "source": "iana", - "compressible": true, - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "application/zstd": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana", - "compressible": false, - "extensions": ["3gpp"] - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/aac": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana", - "extensions": ["amr"] - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/evs": { - "source": "iana" - }, - "audio/flexfec": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g711-0": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/melp": { - "source": "iana" - }, - "audio/melp1200": { - "source": "iana" - }, - "audio/melp2400": { - "source": "iana" - }, - "audio/melp600": { - "source": "iana" - }, - "audio/mhas": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana", - "extensions": ["mxmf"] - }, - "audio/mp3": { - "compressible": false, - "extensions": ["mp3"] - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["m4a","mp4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx","opus"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/scip": { - "source": "iana" - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sofa": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tetra_acelp": { - "source": "iana" - }, - "audio/tetra_acelp_bb": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/tsvcis": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/usac": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dts.uhd": { - "source": "iana" - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.presonus.multitrack": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/collection": { - "source": "iana", - "extensions": ["ttc"] - }, - "font/otf": { - "source": "iana", - "compressible": true, - "extensions": ["otf"] - }, - "font/sfnt": { - "source": "iana" - }, - "font/ttf": { - "source": "iana", - "compressible": true, - "extensions": ["ttf"] - }, - "font/woff": { - "source": "iana", - "extensions": ["woff"] - }, - "font/woff2": { - "source": "iana", - "extensions": ["woff2"] - }, - "image/aces": { - "source": "iana", - "extensions": ["exr"] - }, - "image/apng": { - "compressible": false, - "extensions": ["apng"] - }, - "image/avci": { - "source": "iana", - "extensions": ["avci"] - }, - "image/avcs": { - "source": "iana", - "extensions": ["avcs"] - }, - "image/avif": { - "source": "iana", - "compressible": false, - "extensions": ["avif"] - }, - "image/bmp": { - "source": "iana", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/dicom-rle": { - "source": "iana", - "extensions": ["drle"] - }, - "image/emf": { - "source": "iana", - "extensions": ["emf"] - }, - "image/fits": { - "source": "iana", - "extensions": ["fits"] - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/heic": { - "source": "iana", - "extensions": ["heic"] - }, - "image/heic-sequence": { - "source": "iana", - "extensions": ["heics"] - }, - "image/heif": { - "source": "iana", - "extensions": ["heif"] - }, - "image/heif-sequence": { - "source": "iana", - "extensions": ["heifs"] - }, - "image/hej2k": { - "source": "iana", - "extensions": ["hej2"] - }, - "image/hsj2": { - "source": "iana", - "extensions": ["hsj2"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jls": { - "source": "iana", - "extensions": ["jls"] - }, - "image/jp2": { - "source": "iana", - "compressible": false, - "extensions": ["jp2","jpg2"] - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jph": { - "source": "iana", - "extensions": ["jph"] - }, - "image/jphc": { - "source": "iana", - "extensions": ["jhc"] - }, - "image/jpm": { - "source": "iana", - "compressible": false, - "extensions": ["jpm"] - }, - "image/jpx": { - "source": "iana", - "compressible": false, - "extensions": ["jpx","jpf"] - }, - "image/jxr": { - "source": "iana", - "extensions": ["jxr"] - }, - "image/jxra": { - "source": "iana", - "extensions": ["jxra"] - }, - "image/jxrs": { - "source": "iana", - "extensions": ["jxrs"] - }, - "image/jxs": { - "source": "iana", - "extensions": ["jxs"] - }, - "image/jxsc": { - "source": "iana", - "extensions": ["jxsc"] - }, - "image/jxsi": { - "source": "iana", - "extensions": ["jxsi"] - }, - "image/jxss": { - "source": "iana", - "extensions": ["jxss"] - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/ktx2": { - "source": "iana", - "extensions": ["ktx2"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana", - "extensions": ["pti"] - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana", - "extensions": ["t38"] - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tif","tiff"] - }, - "image/tiff-fx": { - "source": "iana", - "extensions": ["tfx"] - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana", - "extensions": ["azv"] - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana", - "compressible": true, - "extensions": ["ico"] - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.mozilla.apng": { - "source": "iana" - }, - "image/vnd.ms-dds": { - "compressible": true, - "extensions": ["dds"] - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.pco.b16": { - "source": "iana", - "extensions": ["b16"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana", - "extensions": ["tap"] - }, - "image/vnd.valve.source.texture": { - "source": "iana", - "extensions": ["vtf"] - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana", - "extensions": ["pcx"] - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/wmf": { - "source": "iana", - "extensions": ["wmf"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana", - "extensions": [ - "disposition-notification" - ] - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana", - "extensions": ["u8msg"] - }, - "message/global-delivery-status": { - "source": "iana", - "extensions": ["u8dsn"] - }, - "message/global-disposition-notification": { - "source": "iana", - "extensions": ["u8mdn"] - }, - "message/global-headers": { - "source": "iana", - "extensions": ["u8hdr"] - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana", - "extensions": ["wsc"] - }, - "model/3mf": { - "source": "iana", - "extensions": ["3mf"] - }, - "model/e57": { - "source": "iana" - }, - "model/gltf+json": { - "source": "iana", - "compressible": true, - "extensions": ["gltf"] - }, - "model/gltf-binary": { - "source": "iana", - "compressible": true, - "extensions": ["glb"] - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/mtl": { - "source": "iana", - "extensions": ["mtl"] - }, - "model/obj": { - "source": "iana", - "extensions": ["obj"] - }, - "model/step": { - "source": "iana" - }, - "model/step+xml": { - "source": "iana", - "compressible": true, - "extensions": ["stpx"] - }, - "model/step+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpz"] - }, - "model/step-xml+zip": { - "source": "iana", - "compressible": false, - "extensions": ["stpxz"] - }, - "model/stl": { - "source": "iana", - "extensions": ["stl"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "compressible": true, - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana", - "compressible": true - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana", - "extensions": ["ogex"] - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana", - "extensions": ["x_b"] - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana", - "extensions": ["x_t"] - }, - "model/vnd.pytha.pyox": { - "source": "iana" - }, - "model/vnd.rosette.annotated-data-model": { - "source": "iana" - }, - "model/vnd.sap.vds": { - "source": "iana", - "extensions": ["vds"] - }, - "model/vnd.usdz+zip": { - "source": "iana", - "compressible": false, - "extensions": ["usdz"] - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana", - "extensions": ["bsp"] - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana", - "extensions": ["x3db"] - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana", - "extensions": ["x3dv"] - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana" - }, - "multipart/multilingual": { - "source": "iana" - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/vnd.bint.med-plus": { - "source": "iana" - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/cql": { - "source": "iana" - }, - "text/cql-expression": { - "source": "iana" - }, - "text/cql-identifier": { - "source": "iana" - }, - "text/css": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fhirpath": { - "source": "iana" - }, - "text/flexfec": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/gff3": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "compressible": true, - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana", - "compressible": true, - "extensions": ["markdown","md"] - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mdx": { - "compressible": true, - "extensions": ["mdx"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana", - "charset": "UTF-8" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana", - "charset": "UTF-8" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/prs.prop.logic": { - "source": "iana" - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/shaclc": { - "source": "iana" - }, - "text/shex": { - "source": "iana", - "extensions": ["shex"] - }, - "text/slim": { - "extensions": ["slim","slm"] - }, - "text/spdx": { - "source": "iana", - "extensions": ["spdx"] - }, - "text/strings": { - "source": "iana" - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.ascii-art": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.familysearch.gedcom": { - "source": "iana", - "extensions": ["ged"] - }, - "text/vnd.ficlab.flt": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.gml": { - "source": "iana" - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.hans": { - "source": "iana" - }, - "text/vnd.hgl": { - "source": "iana" - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.senx.warpscript": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sosi": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "charset": "UTF-8", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana", - "charset": "UTF-8" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-org": { - "compressible": true, - "extensions": ["org"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-suse-ymp": { - "compressible": true, - "extensions": ["ymp"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "compressible": true, - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "iana" - }, - "video/3gpp": { - "source": "iana", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "iana" - }, - "video/3gpp2": { - "source": "iana", - "extensions": ["3g2"] - }, - "video/av1": { - "source": "iana" - }, - "video/bmpeg": { - "source": "iana" - }, - "video/bt656": { - "source": "iana" - }, - "video/celb": { - "source": "iana" - }, - "video/dv": { - "source": "iana" - }, - "video/encaprtp": { - "source": "iana" - }, - "video/ffv1": { - "source": "iana" - }, - "video/flexfec": { - "source": "iana" - }, - "video/h261": { - "source": "iana", - "extensions": ["h261"] - }, - "video/h263": { - "source": "iana", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "iana" - }, - "video/h263-2000": { - "source": "iana" - }, - "video/h264": { - "source": "iana", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "iana" - }, - "video/h264-svc": { - "source": "iana" - }, - "video/h265": { - "source": "iana" - }, - "video/iso.segment": { - "source": "iana", - "extensions": ["m4s"] - }, - "video/jpeg": { - "source": "iana", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "iana" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/jxsv": { - "source": "iana" - }, - "video/mj2": { - "source": "iana", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "iana" - }, - "video/mp2p": { - "source": "iana" - }, - "video/mp2t": { - "source": "iana", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "iana" - }, - "video/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "iana" - }, - "video/mpv": { - "source": "iana" - }, - "video/nv": { - "source": "iana" - }, - "video/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "iana" - }, - "video/pointer": { - "source": "iana" - }, - "video/quicktime": { - "source": "iana", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raptorfec": { - "source": "iana" - }, - "video/raw": { - "source": "iana" - }, - "video/rtp-enc-aescm128": { - "source": "iana" - }, - "video/rtploopback": { - "source": "iana" - }, - "video/rtx": { - "source": "iana" - }, - "video/scip": { - "source": "iana" - }, - "video/smpte291": { - "source": "iana" - }, - "video/smpte292m": { - "source": "iana" - }, - "video/ulpfec": { - "source": "iana" - }, - "video/vc1": { - "source": "iana" - }, - "video/vc2": { - "source": "iana" - }, - "video/vnd.cctv": { - "source": "iana" - }, - "video/vnd.dece.hd": { - "source": "iana", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "iana", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "iana" - }, - "video/vnd.dece.pd": { - "source": "iana", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "iana", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "iana", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "iana" - }, - "video/vnd.directv.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "iana" - }, - "video/vnd.dvb.file": { - "source": "iana", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "iana", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "iana" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "iana" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "iana" - }, - "video/vnd.motorola.video": { - "source": "iana" - }, - "video/vnd.motorola.videop": { - "source": "iana" - }, - "video/vnd.mpegurl": { - "source": "iana", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "iana", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "iana" - }, - "video/vnd.nokia.mp4vr": { - "source": "iana" - }, - "video/vnd.nokia.videovoip": { - "source": "iana" - }, - "video/vnd.objectvideo": { - "source": "iana" - }, - "video/vnd.radgamettools.bink": { - "source": "iana" - }, - "video/vnd.radgamettools.smacker": { - "source": "iana" - }, - "video/vnd.sealed.mpeg1": { - "source": "iana" - }, - "video/vnd.sealed.mpeg4": { - "source": "iana" - }, - "video/vnd.sealed.swf": { - "source": "iana" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "iana" - }, - "video/vnd.uvvu.mp4": { - "source": "iana", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "iana", - "extensions": ["viv"] - }, - "video/vnd.youtube.yt": { - "source": "iana" - }, - "video/vp8": { - "source": "iana" - }, - "video/vp9": { - "source": "iana" - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/node_modules/mime-db/index.js b/node_modules/mime-db/index.js deleted file mode 100644 index ec2be30..0000000 --- a/node_modules/mime-db/index.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/node_modules/mime-db/package.json b/node_modules/mime-db/package.json deleted file mode 100644 index 32c14b8..0000000 --- a/node_modules/mime-db/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.52.0", - "contributors": [ - "Douglas Christopher Wilson ", - "Jonathan Ong (http://jongleberry.com)", - "Robert Kieffer (http://github.com/broofa)" - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": "jshttp/mime-db", - "devDependencies": { - "bluebird": "3.7.2", - "co": "4.6.0", - "cogent": "1.0.1", - "csv-parse": "4.16.3", - "eslint": "7.32.0", - "eslint-config-standard": "15.0.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.1.1", - "eslint-plugin-standard": "4.1.0", - "gnode": "0.1.2", - "media-typer": "1.1.0", - "mocha": "9.2.1", - "nyc": "15.1.0", - "raw-body": "2.5.0", - "stream-to-array": "2.3.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", - "lint": "eslint .", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "update": "npm run fetch && npm run build", - "version": "node scripts/version-history.js && git add HISTORY.md" - } -} diff --git a/node_modules/mime-types/HISTORY.md b/node_modules/mime-types/HISTORY.md deleted file mode 100644 index c5043b7..0000000 --- a/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,397 +0,0 @@ -2.1.35 / 2022-03-12 -=================== - - * deps: mime-db@1.52.0 - - Add extensions from IANA for more `image/*` types - - Add extension `.asc` to `application/pgp-keys` - - Add extensions to various XML types - - Add new upstream MIME types - -2.1.34 / 2021-11-08 -=================== - - * deps: mime-db@1.51.0 - - Add new upstream MIME types - -2.1.33 / 2021-10-01 -=================== - - * deps: mime-db@1.50.0 - - Add deprecated iWorks mime types and extensions - - Add new upstream MIME types - -2.1.32 / 2021-07-27 -=================== - - * deps: mime-db@1.49.0 - - Add extension `.trig` to `application/trig` - - Add new upstream MIME types - -2.1.31 / 2021-06-01 -=================== - - * deps: mime-db@1.48.0 - - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` - - Add new upstream MIME types - -2.1.30 / 2021-04-02 -=================== - - * deps: mime-db@1.47.0 - - Add extension `.amr` to `audio/amr` - - Remove ambigious extensions from IANA for `application/*+xml` types - - Update primary extension to `.es` for `application/ecmascript` - -2.1.29 / 2021-02-17 -=================== - - * deps: mime-db@1.46.0 - - Add extension `.amr` to `audio/amr` - - Add extension `.m4s` to `video/iso.segment` - - Add extension `.opus` to `audio/ogg` - - Add new upstream MIME types - -2.1.28 / 2021-01-01 -=================== - - * deps: mime-db@1.45.0 - - Add `application/ubjson` with extension `.ubj` - - Add `image/avif` with extension `.avif` - - Add `image/ktx2` with extension `.ktx2` - - Add extension `.dbf` to `application/vnd.dbf` - - Add extension `.rar` to `application/vnd.rar` - - Add extension `.td` to `application/urc-targetdesc+xml` - - Add new upstream MIME types - - Fix extension of `application/vnd.apple.keynote` to be `.key` - -2.1.27 / 2020-04-23 -=================== - - * deps: mime-db@1.44.0 - - Add charsets from IANA - - Add extension `.cjs` to `application/node` - - Add new upstream MIME types - -2.1.26 / 2020-01-05 -=================== - - * deps: mime-db@1.43.0 - - Add `application/x-keepass2` with extension `.kdbx` - - Add extension `.mxmf` to `audio/mobile-xmf` - - Add extensions from IANA for `application/*+xml` types - - Add new upstream MIME types - -2.1.25 / 2019-11-12 -=================== - - * deps: mime-db@1.42.0 - - Add new upstream MIME types - - Add `application/toml` with extension `.toml` - - Add `image/vnd.ms-dds` with extension `.dds` - -2.1.24 / 2019-04-20 -=================== - - * deps: mime-db@1.40.0 - - Add extensions from IANA for `model/*` types - - Add `text/mdx` with extension `.mdx` - -2.1.23 / 2019-04-17 -=================== - - * deps: mime-db@~1.39.0 - - Add extensions `.siv` and `.sieve` to `application/sieve` - - Add new upstream MIME types - -2.1.22 / 2019-02-14 -=================== - - * deps: mime-db@~1.38.0 - - Add extension `.nq` to `application/n-quads` - - Add extension `.nt` to `application/n-triples` - - Add new upstream MIME types - -2.1.21 / 2018-10-19 -=================== - - * deps: mime-db@~1.37.0 - - Add extensions to HEIC image types - - Add new upstream MIME types - -2.1.20 / 2018-08-26 -=================== - - * deps: mime-db@~1.36.0 - - Add Apple file extensions from IANA - - Add extensions from IANA for `image/*` types - - Add new upstream MIME types - -2.1.19 / 2018-07-17 -=================== - - * deps: mime-db@~1.35.0 - - Add extension `.csl` to `application/vnd.citationstyles.style+xml` - - Add extension `.es` to `application/ecmascript` - - Add extension `.owl` to `application/rdf+xml` - - Add new upstream MIME types - - Add UTF-8 as default charset for `text/turtle` - -2.1.18 / 2018-02-16 -=================== - - * deps: mime-db@~1.33.0 - - Add `application/raml+yaml` with extension `.raml` - - Add `application/wasm` with extension `.wasm` - - Add `text/shex` with extension `.shex` - - Add extensions for JPEG-2000 images - - Add extensions from IANA for `message/*` types - - Add new upstream MIME types - - Update font MIME types - - Update `text/hjson` to registered `application/hjson` - -2.1.17 / 2017-09-01 -=================== - - * deps: mime-db@~1.30.0 - - Add `application/vnd.ms-outlook` - - Add `application/x-arj` - - Add extension `.mjs` to `application/javascript` - - Add glTF types and extensions - - Add new upstream MIME types - - Add `text/x-org` - - Add VirtualBox MIME types - - Fix `source` records for `video/*` types that are IANA - - Update `font/opentype` to registered `font/otf` - -2.1.16 / 2017-07-24 -=================== - - * deps: mime-db@~1.29.0 - - Add `application/fido.trusted-apps+json` - - Add extension `.wadl` to `application/vnd.sun.wadl+xml` - - Add extension `.gz` to `application/gzip` - - Add new upstream MIME types - - Update extensions `.md` and `.markdown` to be `text/markdown` - -2.1.15 / 2017-03-23 -=================== - - * deps: mime-db@~1.27.0 - - Add new mime types - - Add `image/apng` - -2.1.14 / 2017-01-14 -=================== - - * deps: mime-db@~1.26.0 - - Add new mime types - -2.1.13 / 2016-11-18 -=================== - - * deps: mime-db@~1.25.0 - - Add new mime types - -2.1.12 / 2016-09-18 -=================== - - * deps: mime-db@~1.24.0 - - Add new mime types - - Add `audio/mp3` - -2.1.11 / 2016-05-01 -=================== - - * deps: mime-db@~1.23.0 - - Add new mime types - -2.1.10 / 2016-02-15 -=================== - - * deps: mime-db@~1.22.0 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -2.1.9 / 2016-01-06 -================== - - * deps: mime-db@~1.21.0 - - Add new mime types - -2.1.8 / 2015-11-30 -================== - - * deps: mime-db@~1.20.0 - - Add new mime types - -2.1.7 / 2015-09-20 -================== - - * deps: mime-db@~1.19.0 - - Add new mime types - -2.1.6 / 2015-09-03 -================== - - * deps: mime-db@~1.18.0 - - Add new mime types - -2.1.5 / 2015-08-20 -================== - - * deps: mime-db@~1.17.0 - - Add new mime types - -2.1.4 / 2015-07-30 -================== - - * deps: mime-db@~1.16.0 - - Add new mime types - -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/node_modules/mime-types/LICENSE b/node_modules/mime-types/LICENSE deleted file mode 100644 index 0616607..0000000 --- a/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -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/node_modules/mime-types/README.md b/node_modules/mime-types/README.md deleted file mode 100644 index 48d2fb4..0000000 --- a/node_modules/mime-types/README.md +++ /dev/null @@ -1,113 +0,0 @@ -# mime-types - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][ci-image]][ci-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, - `mime-types` simply returns `false`, so do - `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- No `.define()` functionality -- Bug fixes for `.lookup(path)` - -Otherwise, the API is compatible with `mime` 1.x. - -## Install - -This is a [Node.js](https://nodejs.org/en/) module available through the -[npm registry](https://www.npmjs.com/). Installation is done using the -[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. -When given an extension, `mime.lookup` is used to get the matching -content-type, otherwise the given content-type is used. Then if the -content-type does not already have a `charset` parameter, `mime.charset` -is used to get the default charset and add to the returned content-type. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' -mime.contentType('text/html') // 'text/html; charset=utf-8' -mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci -[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml -[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master -[node-version-image]: https://badgen.net/npm/node/mime-types -[node-version-url]: https://nodejs.org/en/download -[npm-downloads-image]: https://badgen.net/npm/dm/mime-types -[npm-url]: https://npmjs.org/package/mime-types -[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/node_modules/mime-types/index.js b/node_modules/mime-types/index.js deleted file mode 100644 index b9f34d5..0000000 --- a/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/node_modules/mime-types/package.json b/node_modules/mime-types/package.json deleted file mode 100644 index bbef696..0000000 --- a/node_modules/mime-types/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.1.35", - "contributors": [ - "Douglas Christopher Wilson ", - "Jeremiah Senkpiel (https://searchbeam.jit.su)", - "Jonathan Ong (http://jongleberry.com)" - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": "jshttp/mime-types", - "dependencies": { - "mime-db": "1.52.0" - }, - "devDependencies": { - "eslint": "7.32.0", - "eslint-config-standard": "14.1.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-markdown": "2.2.1", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-standard": "4.1.0", - "mocha": "9.2.2", - "nyc": "15.1.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "lint": "eslint .", - "test": "mocha --reporter spec test/test.js", - "test-ci": "nyc --reporter=lcov --reporter=text npm test", - "test-cov": "nyc --reporter=html --reporter=text npm test" - } -} diff --git a/node_modules/proxy-from-env/.eslintrc b/node_modules/proxy-from-env/.eslintrc deleted file mode 100644 index a51449b..0000000 --- a/node_modules/proxy-from-env/.eslintrc +++ /dev/null @@ -1,29 +0,0 @@ -{ - "env": { - "node": true - }, - "rules": { - "array-bracket-spacing": [2, "never"], - "block-scoped-var": 2, - "brace-style": [2, "1tbs"], - "camelcase": 1, - "computed-property-spacing": [2, "never"], - "curly": 2, - "eol-last": 2, - "eqeqeq": [2, "smart"], - "max-depth": [1, 3], - "max-len": [1, 80], - "max-statements": [1, 15], - "new-cap": 1, - "no-extend-native": 2, - "no-mixed-spaces-and-tabs": 2, - "no-trailing-spaces": 2, - "no-unused-vars": 1, - "no-use-before-define": [2, "nofunc"], - "object-curly-spacing": [2, "never"], - "quotes": [2, "single", "avoid-escape"], - "semi": [2, "always"], - "keyword-spacing": [2, {"before": true, "after": true}], - "space-unary-ops": 2 - } -} diff --git a/node_modules/proxy-from-env/.travis.yml b/node_modules/proxy-from-env/.travis.yml deleted file mode 100644 index 64a05f9..0000000 --- a/node_modules/proxy-from-env/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: node_js -node_js: - - node - - lts/* -script: - - npm run lint - # test-coverage will also run the tests, but does not print helpful output upon test failure. - # So we also run the tests separately. - - npm run test - - npm run test-coverage && cat coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf coverage diff --git a/node_modules/proxy-from-env/LICENSE b/node_modules/proxy-from-env/LICENSE deleted file mode 100644 index 8f25097..0000000 --- a/node_modules/proxy-from-env/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License - -Copyright (C) 2016-2018 Rob Wu - -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/node_modules/proxy-from-env/README.md b/node_modules/proxy-from-env/README.md deleted file mode 100644 index e82520c..0000000 --- a/node_modules/proxy-from-env/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# proxy-from-env - -[![Build Status](https://travis-ci.org/Rob--W/proxy-from-env.svg?branch=master)](https://travis-ci.org/Rob--W/proxy-from-env) -[![Coverage Status](https://coveralls.io/repos/github/Rob--W/proxy-from-env/badge.svg?branch=master)](https://coveralls.io/github/Rob--W/proxy-from-env?branch=master) - -`proxy-from-env` is a Node.js package that exports a function (`getProxyForUrl`) -that takes an input URL (a string or -[`url.parse`](https://nodejs.org/docs/latest/api/url.html#url_url_parsing)'s -return value) and returns the desired proxy URL (also a string) based on -standard proxy environment variables. If no proxy is set, an empty string is -returned. - -It is your responsibility to actually proxy the request using the given URL. - -Installation: - -```sh -npm install proxy-from-env -``` - -## Example -This example shows how the data for a URL can be fetched via the -[`http` module](https://nodejs.org/api/http.html), in a proxy-aware way. - -```javascript -var http = require('http'); -var parseUrl = require('url').parse; -var getProxyForUrl = require('proxy-from-env').getProxyForUrl; - -var some_url = 'http://example.com/something'; - -// // Example, if there is a proxy server at 10.0.0.1:1234, then setting the -// // http_proxy environment variable causes the request to go through a proxy. -// process.env.http_proxy = 'http://10.0.0.1:1234'; -// -// // But if the host to be proxied is listed in NO_PROXY, then the request is -// // not proxied (but a direct request is made). -// process.env.no_proxy = 'example.com'; - -var proxy_url = getProxyForUrl(some_url); // <-- Our magic. -if (proxy_url) { - // Should be proxied through proxy_url. - var parsed_some_url = parseUrl(some_url); - var parsed_proxy_url = parseUrl(proxy_url); - // A HTTP proxy is quite simple. It is similar to a normal request, except the - // path is an absolute URL, and the proxied URL's host is put in the header - // instead of the server's actual host. - httpOptions = { - protocol: parsed_proxy_url.protocol, - hostname: parsed_proxy_url.hostname, - port: parsed_proxy_url.port, - path: parsed_some_url.href, - headers: { - Host: parsed_some_url.host, // = host name + optional port. - }, - }; -} else { - // Direct request. - httpOptions = some_url; -} -http.get(httpOptions, function(res) { - var responses = []; - res.on('data', function(chunk) { responses.push(chunk); }); - res.on('end', function() { console.log(responses.join('')); }); -}); - -``` - -## Environment variables -The environment variables can be specified in lowercase or uppercase, with the -lowercase name having precedence over the uppercase variant. A variable that is -not set has the same meaning as a variable that is set but has no value. - -### NO\_PROXY - -`NO_PROXY` is a list of host names (optionally with a port). If the input URL -matches any of the entries in `NO_PROXY`, then the input URL should be fetched -by a direct request (i.e. without a proxy). - -Matching follows the following rules: - -- `NO_PROXY=*` disables all proxies. -- Space and commas may be used to separate the entries in the `NO_PROXY` list. -- If `NO_PROXY` does not contain any entries, then proxies are never disabled. -- If a port is added after the host name, then the ports must match. If the URL - does not have an explicit port name, the protocol's default port is used. -- Generally, the proxy is only disabled if the host name is an exact match for - an entry in the `NO_PROXY` list. The only exceptions are entries that start - with a dot or with a wildcard; then the proxy is disabled if the host name - ends with the entry. - -See `test.js` for examples of what should match and what does not. - -### \*\_PROXY - -The environment variable used for the proxy depends on the protocol of the URL. -For example, `https://example.com` uses the "https" protocol, and therefore the -proxy to be used is `HTTPS_PROXY` (_NOT_ `HTTP_PROXY`, which is _only_ used for -http:-URLs). - -The library is not limited to http(s), other schemes such as -`FTP_PROXY` (ftp:), -`WSS_PROXY` (wss:), -`WS_PROXY` (ws:) -are also supported. - -If present, `ALL_PROXY` is used as fallback if there is no other match. - - -## External resources -The exact way of parsing the environment variables is not codified in any -standard. This library is designed to be compatible with formats as expected by -existing software. -The following resources were used to determine the desired behavior: - -- cURL: - https://curl.haxx.se/docs/manpage.html#ENVIRONMENT - https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4446-L4514 - https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4608-L4638 - -- wget: - https://www.gnu.org/software/wget/manual/wget.html#Proxies - http://git.savannah.gnu.org/cgit/wget.git/tree/src/init.c?id=636a5f9a1c508aa39e35a3a8e9e54520a284d93d#n383 - http://git.savannah.gnu.org/cgit/wget.git/tree/src/retr.c?id=93c1517c4071c4288ba5a4b038e7634e4c6b5482#n1278 - -- W3: - https://www.w3.org/Daemon/User/Proxies/ProxyClients.html - -- Python's urllib: - https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L755-L782 - https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L2444-L2479 diff --git a/node_modules/proxy-from-env/index.js b/node_modules/proxy-from-env/index.js deleted file mode 100644 index df75004..0000000 --- a/node_modules/proxy-from-env/index.js +++ /dev/null @@ -1,108 +0,0 @@ -'use strict'; - -var parseUrl = require('url').parse; - -var DEFAULT_PORTS = { - ftp: 21, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443, -}; - -var stringEndsWith = String.prototype.endsWith || function(s) { - return s.length <= this.length && - this.indexOf(s, this.length - s.length) !== -1; -}; - -/** - * @param {string|object} url - The URL, or the result from url.parse. - * @return {string} The URL of the proxy that should handle the request to the - * given URL. If no proxy is set, this will be an empty string. - */ -function getProxyForUrl(url) { - var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; - var proto = parsedUrl.protocol; - var hostname = parsedUrl.host; - var port = parsedUrl.port; - if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { - return ''; // Don't proxy URLs without a valid scheme or host. - } - - proto = proto.split(':', 1)[0]; - // Stripping ports in this way instead of using parsedUrl.hostname to make - // sure that the brackets around IPv6 addresses are kept. - hostname = hostname.replace(/:\d*$/, ''); - port = parseInt(port) || DEFAULT_PORTS[proto] || 0; - if (!shouldProxy(hostname, port)) { - return ''; // Don't proxy URLs that match NO_PROXY. - } - - var proxy = - getEnv('npm_config_' + proto + '_proxy') || - getEnv(proto + '_proxy') || - getEnv('npm_config_proxy') || - getEnv('all_proxy'); - if (proxy && proxy.indexOf('://') === -1) { - // Missing scheme in proxy, default to the requested URL's scheme. - proxy = proto + '://' + proxy; - } - return proxy; -} - -/** - * Determines whether a given URL should be proxied. - * - * @param {string} hostname - The host name of the URL. - * @param {number} port - The effective port of the URL. - * @returns {boolean} Whether the given URL should be proxied. - * @private - */ -function shouldProxy(hostname, port) { - var NO_PROXY = - (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); - if (!NO_PROXY) { - return true; // Always proxy if NO_PROXY is not set. - } - if (NO_PROXY === '*') { - return false; // Never proxy if wildcard is set. - } - - return NO_PROXY.split(/[,\s]/).every(function(proxy) { - if (!proxy) { - return true; // Skip zero-length hosts. - } - var parsedProxy = proxy.match(/^(.+):(\d+)$/); - var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; - var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; - if (parsedProxyPort && parsedProxyPort !== port) { - return true; // Skip if ports don't match. - } - - if (!/^[.*]/.test(parsedProxyHostname)) { - // No wildcards, so stop proxying if there is an exact match. - return hostname !== parsedProxyHostname; - } - - if (parsedProxyHostname.charAt(0) === '*') { - // Remove leading wildcard. - parsedProxyHostname = parsedProxyHostname.slice(1); - } - // Stop proxying if the hostname ends with the no_proxy host. - return !stringEndsWith.call(hostname, parsedProxyHostname); - }); -} - -/** - * Get the value for an environment variable. - * - * @param {string} key - The name of the environment variable. - * @return {string} The value of the environment variable. - * @private - */ -function getEnv(key) { - return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; -} - -exports.getProxyForUrl = getProxyForUrl; diff --git a/node_modules/proxy-from-env/package.json b/node_modules/proxy-from-env/package.json deleted file mode 100644 index be2b845..0000000 --- a/node_modules/proxy-from-env/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "proxy-from-env", - "version": "1.1.0", - "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", - "main": "index.js", - "scripts": { - "lint": "eslint *.js", - "test": "mocha ./test.js --reporter spec", - "test-coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/Rob--W/proxy-from-env.git" - }, - "keywords": [ - "proxy", - "http_proxy", - "https_proxy", - "no_proxy", - "environment" - ], - "author": "Rob Wu (https://robwu.nl/)", - "license": "MIT", - "bugs": { - "url": "https://github.com/Rob--W/proxy-from-env/issues" - }, - "homepage": "https://github.com/Rob--W/proxy-from-env#readme", - "devDependencies": { - "coveralls": "^3.0.9", - "eslint": "^6.8.0", - "istanbul": "^0.4.5", - "mocha": "^7.1.0" - } -} diff --git a/node_modules/proxy-from-env/test.js b/node_modules/proxy-from-env/test.js deleted file mode 100644 index abf6542..0000000 --- a/node_modules/proxy-from-env/test.js +++ /dev/null @@ -1,483 +0,0 @@ -/* eslint max-statements:0 */ -'use strict'; - -var assert = require('assert'); -var parseUrl = require('url').parse; - -var getProxyForUrl = require('./').getProxyForUrl; - -// Runs the callback with process.env temporarily set to env. -function runWithEnv(env, callback) { - var originalEnv = process.env; - process.env = env; - try { - callback(); - } finally { - process.env = originalEnv; - } -} - -// Defines a test case that checks whether getProxyForUrl(input) === expected. -function testProxyUrl(env, expected, input) { - assert(typeof env === 'object' && env !== null); - // Copy object to make sure that the in param does not get modified between - // the call of this function and the use of it below. - env = JSON.parse(JSON.stringify(env)); - - var title = 'getProxyForUrl(' + JSON.stringify(input) + ')' + - ' === ' + JSON.stringify(expected); - - // Save call stack for later use. - var stack = {}; - Error.captureStackTrace(stack, testProxyUrl); - // Only use the last stack frame because that shows where this function is - // called, and that is sufficient for our purpose. No need to flood the logs - // with an uninteresting stack trace. - stack = stack.stack.split('\n', 2)[1]; - - it(title, function() { - var actual; - runWithEnv(env, function() { - actual = getProxyForUrl(input); - }); - if (expected === actual) { - return; // Good! - } - try { - assert.strictEqual(expected, actual); // Create a formatted error message. - // Should not happen because previously we determined expected !== actual. - throw new Error('assert.strictEqual passed. This is impossible!'); - } catch (e) { - // Use the original stack trace, so we can see a helpful line number. - e.stack = e.message + stack; - throw e; - } - }); -} - -describe('getProxyForUrl', function() { - describe('No proxy variables', function() { - var env = {}; - testProxyUrl(env, '', 'http://example.com'); - testProxyUrl(env, '', 'https://example.com'); - testProxyUrl(env, '', 'ftp://example.com'); - }); - - describe('Invalid URLs', function() { - var env = {}; - env.ALL_PROXY = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'bogus'); - testProxyUrl(env, '', '//example.com'); - testProxyUrl(env, '', '://example.com'); - testProxyUrl(env, '', '://'); - testProxyUrl(env, '', '/path'); - testProxyUrl(env, '', ''); - testProxyUrl(env, '', 'http:'); - testProxyUrl(env, '', 'http:/'); - testProxyUrl(env, '', 'http://'); - testProxyUrl(env, '', 'prototype://'); - testProxyUrl(env, '', 'hasOwnProperty://'); - testProxyUrl(env, '', '__proto__://'); - testProxyUrl(env, '', undefined); - testProxyUrl(env, '', null); - testProxyUrl(env, '', {}); - testProxyUrl(env, '', {host: 'x', protocol: 1}); - testProxyUrl(env, '', {host: 1, protocol: 'x'}); - }); - - describe('http_proxy and HTTP_PROXY', function() { - var env = {}; - env.HTTP_PROXY = 'http://http-proxy'; - - testProxyUrl(env, '', 'https://example'); - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://http-proxy', parseUrl('http://example')); - - // eslint-disable-next-line camelcase - env.http_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - }); - - describe('http_proxy with non-sensical value', function() { - var env = {}; - // Crazy values should be passed as-is. It is the responsibility of the - // one who launches the application that the value makes sense. - // TODO: Should we be stricter and perform validation? - env.HTTP_PROXY = 'Crazy \n!() { ::// }'; - testProxyUrl(env, 'Crazy \n!() { ::// }', 'http://wow'); - - // The implementation assumes that the HTTP_PROXY environment variable is - // somewhat reasonable, and if the scheme is missing, it is added. - // Garbage in, garbage out some would say... - env.HTTP_PROXY = 'crazy without colon slash slash'; - testProxyUrl(env, 'http://crazy without colon slash slash', 'http://wow'); - }); - - describe('https_proxy and HTTPS_PROXY', function() { - var env = {}; - // Assert that there is no fall back to http_proxy - env.HTTP_PROXY = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'https://example'); - - env.HTTPS_PROXY = 'http://https-proxy'; - testProxyUrl(env, 'http://https-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.https_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - - describe('ftp_proxy', function() { - var env = {}; - // Something else than http_proxy / https, as a sanity check. - env.FTP_PROXY = 'http://ftp-proxy'; - - testProxyUrl(env, 'http://ftp-proxy', 'ftp://example'); - testProxyUrl(env, '', 'ftps://example'); - }); - - describe('all_proxy', function() { - var env = {}; - env.ALL_PROXY = 'http://catch-all'; - testProxyUrl(env, 'http://catch-all', 'https://example'); - - // eslint-disable-next-line camelcase - env.all_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - - describe('all_proxy without scheme', function() { - var env = {}; - env.ALL_PROXY = 'noscheme'; - testProxyUrl(env, 'http://noscheme', 'http://example'); - testProxyUrl(env, 'https://noscheme', 'https://example'); - - // The module does not impose restrictions on the scheme. - testProxyUrl(env, 'bogus-scheme://noscheme', 'bogus-scheme://example'); - - // But the URL should still be valid. - testProxyUrl(env, '', 'bogus'); - }); - - describe('no_proxy empty', function() { - var env = {}; - env.HTTPS_PROXY = 'http://proxy'; - - // NO_PROXY set but empty. - env.NO_PROXY = ''; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (comma). - env.NO_PROXY = ','; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (whitespace). - env.NO_PROXY = ' '; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (multiple whitespace / commas). - env.NO_PROXY = ',\t,,,\n, ,\r'; - testProxyUrl(env, 'http://proxy', 'https://example'); - }); - - describe('no_proxy=example (single host)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'example'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:0'); - testProxyUrl(env, '', 'http://example:1337'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - testProxyUrl(env, 'http://proxy', 'http://host/example'); - }); - - describe('no_proxy=sub.example (subdomain)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'sub.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:0'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://no.sub.example'); - testProxyUrl(env, 'http://proxy', 'http://sub-example'); - testProxyUrl(env, 'http://proxy', 'http://example.sub'); - }); - - describe('no_proxy=example:80 (host + port)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'example:80'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:0'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - }); - - describe('no_proxy=.example (host suffix)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, '', 'http://a.b.example'); - }); - - describe('no_proxy=*', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = '*'; - testProxyUrl(env, '', 'http://example.com'); - }); - - describe('no_proxy=*.example (host suffix with *.)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '*.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, '', 'http://a.b.example'); - }); - - describe('no_proxy=*example (substring suffix)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '*example'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, '', 'http://prefexample'); - testProxyUrl(env, '', 'http://a.b.example'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://host/example'); - }); - - describe('no_proxy=.*example (arbitrary wildcards are NOT supported)', - function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '.*example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://x.prefexample'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - }); - - describe('no_proxy=[::1],[::2]:80,10.0.0.1,10.0.0.2:80 (IP addresses)', - function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '[::1],[::2]:80,10.0.0.1,10.0.0.2:80'; - testProxyUrl(env, '', 'http://[::1]/'); - testProxyUrl(env, '', 'http://[::1]:80/'); - testProxyUrl(env, '', 'http://[::1]:1337/'); - - testProxyUrl(env, '', 'http://[::2]/'); - testProxyUrl(env, '', 'http://[::2]:80/'); - testProxyUrl(env, 'http://proxy', 'http://[::2]:1337/'); - - testProxyUrl(env, '', 'http://10.0.0.1/'); - testProxyUrl(env, '', 'http://10.0.0.1:80/'); - testProxyUrl(env, '', 'http://10.0.0.1:1337/'); - - testProxyUrl(env, '', 'http://10.0.0.2/'); - testProxyUrl(env, '', 'http://10.0.0.2:80/'); - testProxyUrl(env, 'http://proxy', 'http://10.0.0.2:1337/'); - }); - - describe('no_proxy=127.0.0.1/32 (CIDR is NOT supported)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '127.0.0.1/32'; - testProxyUrl(env, 'http://proxy', 'http://127.0.0.1'); - testProxyUrl(env, 'http://proxy', 'http://127.0.0.1/32'); - }); - - describe('no_proxy=127.0.0.1 does NOT match localhost', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '127.0.0.1'; - testProxyUrl(env, '', 'http://127.0.0.1'); - // We're not performing DNS queries, so this shouldn't match. - testProxyUrl(env, 'http://proxy', 'http://localhost'); - }); - - describe('no_proxy with protocols that have a default port', function() { - var env = {}; - env.WS_PROXY = 'http://ws'; - env.WSS_PROXY = 'http://wss'; - env.HTTP_PROXY = 'http://http'; - env.HTTPS_PROXY = 'http://https'; - env.GOPHER_PROXY = 'http://gopher'; - env.FTP_PROXY = 'http://ftp'; - env.ALL_PROXY = 'http://all'; - - env.NO_PROXY = 'xxx:21,xxx:70,xxx:80,xxx:443'; - - testProxyUrl(env, '', 'http://xxx'); - testProxyUrl(env, '', 'http://xxx:80'); - testProxyUrl(env, 'http://http', 'http://xxx:1337'); - - testProxyUrl(env, '', 'ws://xxx'); - testProxyUrl(env, '', 'ws://xxx:80'); - testProxyUrl(env, 'http://ws', 'ws://xxx:1337'); - - testProxyUrl(env, '', 'https://xxx'); - testProxyUrl(env, '', 'https://xxx:443'); - testProxyUrl(env, 'http://https', 'https://xxx:1337'); - - testProxyUrl(env, '', 'wss://xxx'); - testProxyUrl(env, '', 'wss://xxx:443'); - testProxyUrl(env, 'http://wss', 'wss://xxx:1337'); - - testProxyUrl(env, '', 'gopher://xxx'); - testProxyUrl(env, '', 'gopher://xxx:70'); - testProxyUrl(env, 'http://gopher', 'gopher://xxx:1337'); - - testProxyUrl(env, '', 'ftp://xxx'); - testProxyUrl(env, '', 'ftp://xxx:21'); - testProxyUrl(env, 'http://ftp', 'ftp://xxx:1337'); - }); - - describe('no_proxy should not be case-sensitive', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = 'XXX,YYY,ZzZ'; - - testProxyUrl(env, '', 'http://xxx'); - testProxyUrl(env, '', 'http://XXX'); - testProxyUrl(env, '', 'http://yyy'); - testProxyUrl(env, '', 'http://YYY'); - testProxyUrl(env, '', 'http://ZzZ'); - testProxyUrl(env, '', 'http://zZz'); - }); - - describe('NPM proxy configuration', function() { - describe('npm_config_http_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://http-proxy'; - - testProxyUrl(env, '', 'https://example'); - testProxyUrl(env, 'http://http-proxy', 'http://example'); - - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - }); - // eslint-disable-next-line max-len - describe('npm_config_http_proxy should take precedence over HTTP_PROXY and npm_config_proxy', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://http-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - env.HTTP_PROXY = 'http://unexpected-proxy'; - - testProxyUrl(env, 'http://http-proxy', 'http://example'); - }); - describe('npm_config_https_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://https-proxy'; - testProxyUrl(env, 'http://https-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - // eslint-disable-next-line max-len - describe('npm_config_https_proxy should take precedence over HTTPS_PROXY and npm_config_proxy', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://https-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - env.HTTPS_PROXY = 'http://unexpected-proxy'; - - testProxyUrl(env, 'http://https-proxy', 'https://example'); - }); - describe('npm_config_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://http-proxy'; - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://http-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - testProxyUrl(env, 'http://priority', 'https://example'); - }); - // eslint-disable-next-line max-len - describe('HTTP_PROXY and HTTPS_PROXY should take precedence over npm_config_proxy', function() { - var env = {}; - env.HTTP_PROXY = 'http://http-proxy'; - env.HTTPS_PROXY = 'http://https-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://https-proxy', 'https://example'); - }); - describe('npm_config_no_proxy should work', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - // eslint-disable-next-line camelcase - env.npm_config_no_proxy = 'example'; - - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); - }); - // eslint-disable-next-line max-len - describe('npm_config_no_proxy should take precedence over NO_PROXY', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = 'otherwebsite'; - // eslint-disable-next-line camelcase - env.npm_config_no_proxy = 'example'; - - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); - }); - }); -}); From 7bfe53d7cf8db7753d09264df3b6d74813f319e9 Mon Sep 17 00:00:00 2001 From: seulle Date: Tue, 26 Mar 2024 00:24:47 +0900 Subject: [PATCH 015/101] =?UTF-8?q?v0.1.0=203=EA=B0=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=ED=99=94=EB=A9=B4=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/InventoryAll.vue | 168 +++++++++++-- .../src/components/InventoryList.vue | 6 +- .../SidebarPlugin/inventoryTest.vue | 229 ++++++++++++++++++ .../src/layout/DashboardLayout.vue | 2 +- 4 files changed, 374 insertions(+), 31 deletions(-) create mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/inventoryTest.vue diff --git a/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue index 518bfac..6854ce7 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue @@ -4,13 +4,13 @@
-
+

총 재고 목록

ui수정 예정입니다..

- +
+   
-
+ +
+ +
+
@@ -42,18 +51,44 @@ - - - - - - - + + + + + + +
{{ inventory['재고 입고일'] }}{{ inventory['상품 코드'] }}{{ inventory['등급'] }}{{ inventory['수량'] }}{{ inventory['판매 가격'] }}{{ inventory['창고 코드'] }}
{{ formatDate(inventory.firstStockDate) }}{{ inventory.goodsCode }}{{ inventory.goodsGrade }}{{ inventory.inventoryQuantity }}{{ inventory.salesPrice }}{{ inventory.storageCode }}
+ +
+
+
{{ grade }} 등급 재고 목록
+
+ + + + + + + + + + + + + + + + + +
상품 코드수량판매 가격창고 코드
{{ inventory.goodsCode }}{{ inventory.inventoryQuantity }}{{ inventory.salesPrice }}{{ inventory.storageCode }}
+
+
+
@@ -67,13 +102,14 @@ import axios from 'axios'; export default { data() { return { + sortOption: '', searchQuery: '', selectedSearchOption: '', inventories: { - columns: ['재고 입고일', '상품 코드', '등급', '수량', '판매 가격', '창고 코드'], data: [], filteredData: [], - } + }, + grades: ['A', 'B', 'C', '폐기'], }; }, mounted() { @@ -83,22 +119,47 @@ export default { fetchInventories() { axios.get('http://localhost:8080/api/inventories') .then(response => { - this.inventories.data = response.data.map(item => ({ - '재고 입고일': item.firstStockDate, - '상품 코드': item.goodsCode, - '등급': item.goodsGrade, - '수량': item.inventoryQuantity, - '판매 가격': item.salesPrice, - '창고 코드': item.storage.contactCode, - })); - this.inventories.filteredData = this.inventories.data; + this.inventories.data = response.data; + this.filterInventories(); // 초기 데이터 로딩 후 필터링 }) - .catch(error => { - console.error("재고 목록을 가져오는 데 실패했습니다.", error); - }); + .catch(error => console.error("재고 목록을 가져오는 데 실패했습니다.", error)); }, filterInventories() { - // 필터링 로직 + let result = this.inventories.data; + if (this.searchQuery && this.selectedSearchOption) { + result = result.filter(item => + String(item[this.selectedSearchOption]) + .toLowerCase() + .includes(this.searchQuery.toLowerCase())); + } + this.inventories.filteredData = result; + this.sortInventories(); // 필터링 후 정렬 + }, + sortInventories() { + if (this.sortOption === 'dateAsc') { + this.inventories.filteredData.sort((a, b) => new Date(a.firstStockDate) - new Date(b.firstStockDate)); + } else if (this.sortOption === 'quantityAsc') { + this.inventories.filteredData.sort((a, b) => parseFloat(a.inventoryQuantity) - parseFloat(b.inventoryQuantity)); + } + }, + formatDate(dateString) { + const date = new Date(dateString); + return date.toLocaleDateString('ko-KR', { + year: 'numeric', month: '2-digit', day: '2-digit', + hour: '2-digit', minute: '2-digit', second: '2-digit', + hour12: false + }); + }, + filteredInventoriesByGrade(grade) { + return this.inventories.filteredData.filter(inventory => inventory.goodsGrade === grade); + }, + }, + watch: { + searchQuery() { + this.filterInventories(); + }, + selectedSearchOption() { + this.filterInventories(); }, }, }; @@ -110,4 +171,59 @@ export default { gap: 10px; margin-bottom: 20px; } + + +/* 등급별 섹션 스타일링 */ +.grades-section { + display: flex; + flex-wrap: wrap; + gap: 20px; + margin-top: 20px; +} + +/* 등급별 컨테이너 스타일링 */ +.grade-container { + flex: 1 1 22%; /* flex-grow, flex-shrink, flex-basis */ + min-width: 220px; /* 최소 너비 설정 */ + background: #f8f9fa; + padding: 15px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +.table-responsive { + margin-top: 15px; +} + +h5 { + text-align: center; + margin-bottom: 15px; +} + +/* 검색 옵션 및 정렬 드롭다운 사이의 간격 조정 */ +.search-options { + display: flex; + gap: 10px; /* 간격 조정 */ + margin-bottom: 20px; + align-items: center; /* 요소들을 수직으로 중앙 정렬 */ +} + +/* 드롭다운 및 검색 입력 필드 스타일 조정 */ +.form-control { + height: 38px; /* 높이 줄임 */ + width: 150px; + font-size: 14px; /* 글꼴 크기 줄임 */ +} + +/* 버튼 스타일 조정 */ +.btn { + padding: 8px 12px; /* 패딩 조정 */ + font-size: 14px; /* 글꼴 크기 줄임 */ +} + +/* 버튼 아이콘 크기 조정 */ +.btn .material-icons { + font-size: 18px; /* 아이콘 글꼴 크기 줄임 */ +} + diff --git a/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue b/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue index c1cd123..0d75535 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/InventoryList.vue @@ -5,7 +5,7 @@
-

창고별 재고 목록

+

창고별 재고 목록 test

창고별 재고를 확인하세요.

@@ -15,8 +15,7 @@ 상품 코드: {{ inventory['상품 코드'] }}, 등급: {{ inventory['등급'] }}, 수량: {{ inventory['수량'] }}, - 판매 가격: {{ inventory['판매 가격'] }}, - 창고 코드: {{ inventory['창고 코드'] }} + 판매 가격: {{ inventory['판매 가격'] }}
@@ -52,7 +51,6 @@ export default { '등급': inventory.goodsGrade, '수량': inventory.inventoryQuantity, '판매 가격': inventory.salesPrice, - '창고 코드': inventory.storageCode, // 백엔드에서 제공하는 창고 코드 사용 })); }) .catch(error => { diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/inventoryTest.vue b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/inventoryTest.vue new file mode 100644 index 0000000..6854ce7 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/inventoryTest.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue index 26645d4..06de270 100644 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue +++ b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue @@ -31,7 +31,7 @@

창고 관리

- +

재고

From 1be730b5bde685e3506e58b306939489a2e5a2d4 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Tue, 26 Mar 2024 16:16:31 +0900 Subject: [PATCH 016/101] delete all previous files(templates) --- Cypress-Program | 1 - package-lock.json | 102 - package.json | 5 - vue-light-bootstrap-dashboard-master/.babelrc | 10 - .../.editorconfig | 9 - .../.eslintrc | 6 - .../.github/workflows/main.yml | 12 - .../workflows/main.yml:Zone.Identifier | 3 - .../.gitignore | 16 - vue-light-bootstrap-dashboard-master/.npmrc | 1 - .../.postcssrc.js | 8 - .../CHANGELOG.md | 19 - .../CODE_OF_CONDUCT.md | 46 - .../CONTRIBUTING.md | 10 - .../ISSUE_TEMPLATE.md | 13 - vue-light-bootstrap-dashboard-master/LICENSE | 21 - .../README.md | 57 - .../documentation/css/demo.css | 73 - .../css/demo.css:Zone.Identifier | 3 - .../documentation/css/documentation.css | 203 - .../css/documentation.css:Zone.Identifier | 3 - .../documentation/css/light-dashboard.css | 11558 ---------------- .../css/light-dashboard.css:Zone.Identifier | 3 - .../documentation/img/apple-icon.png | Bin 2446 -> 0 bytes .../img/apple-icon.png:Zone.Identifier | 3 - .../documentation/img/back.jpg | Bin 610834 -> 0 bytes .../img/back.jpg:Zone.Identifier | 3 - .../documentation/img/favicon.png | Bin 2761 -> 0 bytes .../img/favicon.png:Zone.Identifier | 3 - .../documentation/img/tim-logo.png | Bin 4821 -> 0 bytes .../img/tim-logo.png:Zone.Identifier | 3 - .../documentation/tutorial-components.html | 97 - .../tutorial-components.html:Zone.Identifier | 3 - .../intelij.webpack.js | 12 - .../package.json | 40 - .../public/.gitkeep | 0 .../public/.gitkeep:Zone.Identifier | 3 - .../public/Dashboard.PNG | Bin 224552 -> 0 bytes .../public/Dashboard.PNG:Zone.Identifier | 3 - .../public/favicon.png | Bin 2761 -> 0 bytes .../public/favicon.png:Zone.Identifier | 3 - .../public/img/default-avatar.png | Bin 2864 -> 0 bytes .../img/default-avatar.png:Zone.Identifier | 3 - .../public/img/faces/face-0.jpg | Bin 2864 -> 0 bytes .../img/faces/face-0.jpg:Zone.Identifier | 3 - .../public/img/faces/face-1.jpg | Bin 20568 -> 0 bytes .../img/faces/face-1.jpg:Zone.Identifier | 3 - .../public/img/faces/face-2.jpg | Bin 20663 -> 0 bytes .../img/faces/face-2.jpg:Zone.Identifier | 3 - .../public/img/faces/face-3.jpg | Bin 20603 -> 0 bytes .../img/faces/face-3.jpg:Zone.Identifier | 3 - .../public/img/faces/face-4.jpg | Bin 19868 -> 0 bytes .../img/faces/face-4.jpg:Zone.Identifier | 3 - .../public/img/faces/face-5.jpg | Bin 4716 -> 0 bytes .../img/faces/face-5.jpg:Zone.Identifier | 3 - .../public/img/faces/face-6.jpg | Bin 4581 -> 0 bytes .../img/faces/face-6.jpg:Zone.Identifier | 3 - .../public/img/faces/face-7.jpg | Bin 21603 -> 0 bytes .../img/faces/face-7.jpg:Zone.Identifier | 3 - .../public/img/faces/tim_vector.jpe | Bin 29406 -> 0 bytes .../img/faces/tim_vector.jpe:Zone.Identifier | 3 - .../public/img/favicon.ico | Bin 1150 -> 0 bytes .../public/img/favicon.ico:Zone.Identifier | 3 - .../public/img/favicon.png | Bin 2761 -> 0 bytes .../public/img/favicon.png:Zone.Identifier | 3 - .../img/icons/android-chrome-192x192.png | Bin 9416 -> 0 bytes ...android-chrome-192x192.png:Zone.Identifier | 3 - .../img/icons/android-chrome-512x512.png | Bin 29808 -> 0 bytes ...android-chrome-512x512.png:Zone.Identifier | 3 - .../img/icons/apple-touch-icon-120x120.png | Bin 3369 -> 0 bytes ...ple-touch-icon-120x120.png:Zone.Identifier | 3 - .../img/icons/apple-touch-icon-152x152.png | Bin 4046 -> 0 bytes ...ple-touch-icon-152x152.png:Zone.Identifier | 3 - .../img/icons/apple-touch-icon-180x180.png | Bin 4678 -> 0 bytes ...ple-touch-icon-180x180.png:Zone.Identifier | 3 - .../img/icons/apple-touch-icon-60x60.png | Bin 1491 -> 0 bytes ...apple-touch-icon-60x60.png:Zone.Identifier | 3 - .../img/icons/apple-touch-icon-76x76.png | Bin 1823 -> 0 bytes ...apple-touch-icon-76x76.png:Zone.Identifier | 3 - .../public/img/icons/apple-touch-icon.png | Bin 4678 -> 0 bytes .../apple-touch-icon.png:Zone.Identifier | 3 - .../public/img/icons/favicon-16x16.png | Bin 799 -> 0 bytes .../icons/favicon-16x16.png:Zone.Identifier | 3 - .../public/img/icons/favicon-32x32.png | Bin 1271 -> 0 bytes .../icons/favicon-32x32.png:Zone.Identifier | 3 - .../img/icons/msapplication-icon-144x144.png | Bin 1169 -> 0 bytes ...plication-icon-144x144.png:Zone.Identifier | 3 - .../public/img/icons/mstile-150x150.png | Bin 4282 -> 0 bytes .../icons/mstile-150x150.png:Zone.Identifier | 3 - .../public/img/icons/safari-pinned-tab.svg | 149 - .../safari-pinned-tab.svg:Zone.Identifier | 3 - .../public/img/loading-bubbles.svg | 14 - .../img/loading-bubbles.svg:Zone.Identifier | 3 - .../public/img/mask.png | Bin 756 -> 0 bytes .../public/img/mask.png:Zone.Identifier | 3 - .../public/img/new_logo.png | Bin 3557 -> 0 bytes .../public/img/new_logo.png:Zone.Identifier | 3 - .../public/img/sidebar-1.jpg | Bin 225399 -> 0 bytes .../public/img/sidebar-1.jpg:Zone.Identifier | 3 - .../public/img/sidebar-2.jpg | Bin 129997 -> 0 bytes .../public/img/sidebar-2.jpg:Zone.Identifier | 3 - .../public/img/sidebar-3.jpg | Bin 119572 -> 0 bytes .../public/img/sidebar-3.jpg:Zone.Identifier | 3 - .../public/img/sidebar-4.jpg | Bin 143224 -> 0 bytes .../public/img/sidebar-4.jpg:Zone.Identifier | 3 - .../public/img/sidebar-5.jpg | Bin 77287 -> 0 bytes .../public/img/sidebar-5.jpg:Zone.Identifier | 3 - .../public/img/tim_80x80.png | Bin 4821 -> 0 bytes .../public/img/tim_80x80.png:Zone.Identifier | 3 - .../public/img/vue-logo.png | Bin 4178 -> 0 bytes .../public/img/vue-logo.png:Zone.Identifier | 3 - .../public/index.html | 52 - .../public/index.html:Zone.Identifier | 3 - .../public/manifest.json | 20 - .../public/manifest.json:Zone.Identifier | 3 - .../public/robots.txt | 2 - .../public/robots.txt:Zone.Identifier | 3 - .../src/App.vue | 38 - .../src/App.vue:Zone.Identifier | 3 - .../src/assets/css/demo.css | 828 -- .../src/assets/css/demo.css:Zone.Identifier | 3 - .../src/assets/fonts/nucleo-icons.eot | Bin 27560 -> 0 bytes .../fonts/nucleo-icons.eot:Zone.Identifier | 3 - .../src/assets/fonts/nucleo-icons.svg | 312 - .../fonts/nucleo-icons.svg:Zone.Identifier | 3 - .../src/assets/fonts/nucleo-icons.ttf | Bin 27376 -> 0 bytes .../fonts/nucleo-icons.ttf:Zone.Identifier | 3 - .../src/assets/fonts/nucleo-icons.woff | Bin 15884 -> 0 bytes .../src/assets/fonts/nucleo-icons.woff2 | Bin 13344 -> 0 bytes .../fonts/nucleo-icons.woff2:Zone.Identifier | 3 - .../fonts/nucleo-icons.woff:Zone.Identifier | 3 - .../src/assets/sass/lbd/_alerts.scss | 90 - .../sass/lbd/_alerts.scss:Zone.Identifier | 3 - .../assets/sass/lbd/_bootstrap-switch.scss | 128 - .../_bootstrap-switch.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_buttons.scss | 132 - .../sass/lbd/_buttons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_cards.scss | 255 - .../sass/lbd/_cards.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_chartist.scss | 230 - .../sass/lbd/_chartist.scss:Zone.Identifier | 3 - .../sass/lbd/_checkbox-radio-switch.scss | 142 - ...checkbox-radio-switch.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_dropdown.scss | 137 - .../sass/lbd/_dropdown.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_footers.scss | 75 - .../sass/lbd/_footers.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_inputs.scss | 141 - .../sass/lbd/_inputs.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_misc.scss | 129 - .../sass/lbd/_misc.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_mixins.scss | 22 - .../sass/lbd/_mixins.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_navbars.scss | 379 - .../sass/lbd/_navbars.scss:Zone.Identifier | 3 - .../sass/lbd/_partial-nucleo-icons.scss | 577 - ..._partial-nucleo-icons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_responsive.scss | 479 - .../sass/lbd/_responsive.scss:Zone.Identifier | 3 - .../sass/lbd/_sidebar-and-main-panel.scss | 455 - ...idebar-and-main-panel.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_tables.scss | 99 - .../sass/lbd/_tables.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_typography.scss | 90 - .../sass/lbd/_typography.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/_variables.scss | 263 - .../sass/lbd/_variables.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_buttons.scss | 70 - .../lbd/mixins/_buttons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_cards.scss | 8 - .../lbd/mixins/_cards.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_chartist.scss | 85 - .../lbd/mixins/_chartist.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_icons.scss | 13 - .../lbd/mixins/_icons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_inputs.scss | 17 - .../lbd/mixins/_inputs.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_labels.scss | 21 - .../lbd/mixins/_labels.scss:Zone.Identifier | 3 - .../sass/lbd/mixins/_morphing-buttons.scss | 34 - .../_morphing-buttons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_navbars.scss | 11 - .../lbd/mixins/_navbars.scss:Zone.Identifier | 3 - .../sass/lbd/mixins/_social-buttons.scss | 43 - .../_social-buttons.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/mixins/_tabs.scss | 4 - .../lbd/mixins/_tabs.scss:Zone.Identifier | 3 - .../assets/sass/lbd/mixins/_transparency.scss | 20 - .../mixins/_transparency.scss:Zone.Identifier | 3 - .../sass/lbd/mixins/_vendor-prefixes.scss | 211 - .../_vendor-prefixes.scss:Zone.Identifier | 3 - .../src/assets/sass/lbd/plugins/_animate.scss | 227 - .../lbd/plugins/_animate.scss:Zone.Identifier | 3 - .../sass/lbd/plugins/_datetime-picker.scss | 463 - .../_datetime-picker.scss:Zone.Identifier | 3 - .../sass/light-bootstrap-dashboard.scss | 47 - ...t-bootstrap-dashboard.scss:Zone.Identifier | 3 - .../src/components/BaseDropdown.vue | 55 - .../BaseDropdown.vue:Zone.Identifier | 3 - .../src/components/Cards/Card.vue | 53 - .../components/Cards/Card.vue:Zone.Identifier | 3 - .../src/components/Cards/ChartCard.vue | 137 - .../Cards/ChartCard.vue:Zone.Identifier | 3 - .../src/components/Cards/StatsCard.vue | 32 - .../Cards/StatsCard.vue:Zone.Identifier | 3 - .../src/components/Inputs/BaseCheckbox.vue | 52 - .../Inputs/BaseCheckbox.vue:Zone.Identifier | 3 - .../src/components/Inputs/BaseInput.vue | 97 - .../Inputs/BaseInput.vue:Zone.Identifier | 3 - .../src/components/Inputs/BaseRadio.vue | 49 - .../Inputs/BaseRadio.vue:Zone.Identifier | 3 - .../NotificationPlugin/Notification.vue | 174 - .../Notification.vue:Zone.Identifier | 3 - .../NotificationPlugin/Notifications.vue | 81 - .../Notifications.vue:Zone.Identifier | 3 - .../components/NotificationPlugin/index.js | 66 - .../index.js:Zone.Identifier | 3 - .../src/components/SidebarPlugin/SideBar.vue | 103 - .../SidebarPlugin/SideBar.vue:Zone.Identifier | 3 - .../components/SidebarPlugin/SidebarLink.vue | 48 - .../SidebarLink.vue:Zone.Identifier | 3 - .../src/components/SidebarPlugin/index.js | 39 - .../SidebarPlugin/index.js:Zone.Identifier | 3 - .../src/components/Table.vue | 37 - .../src/components/Table.vue:Zone.Identifier | 3 - .../src/components/index.js | 26 - .../src/components/index.js:Zone.Identifier | 3 - .../src/directives/click-ouside.js | 15 - .../click-ouside.js:Zone.Identifier | 3 - .../src/globalComponents.js | 21 - .../src/globalComponents.js:Zone.Identifier | 3 - .../src/globalDirectives.js | 14 - .../src/globalDirectives.js:Zone.Identifier | 3 - .../src/layout/Content.vue | 22 - .../src/layout/Content.vue:Zone.Identifier | 3 - .../src/layout/ContentFooter.vue | 26 - .../layout/ContentFooter.vue:Zone.Identifier | 3 - .../src/layout/DashboardLayout.vue | 77 - .../DashboardLayout.vue:Zone.Identifier | 3 - .../src/layout/MobileMenu.vue | 43 - .../src/layout/MobileMenu.vue:Zone.Identifier | 3 - .../src/layout/TopNavbar.vue | 102 - .../src/layout/TopNavbar.vue:Zone.Identifier | 3 - .../src/light-bootstrap-main.js | 27 - .../light-bootstrap-main.js:Zone.Identifier | 3 - .../src/main.js | 49 - .../src/main.js:Zone.Identifier | 3 - .../src/pages/Icons.vue | 632 - .../src/pages/Icons.vue:Zone.Identifier | 3 - .../src/pages/Maps.vue | 77 - .../src/pages/Maps.vue:Zone.Identifier | 3 - .../src/pages/Maps/API_KEY.js | 1 - .../src/pages/Maps/API_KEY.js:Zone.Identifier | 3 - .../src/pages/NotFoundPage.vue | 66 - .../pages/NotFoundPage.vue:Zone.Identifier | 3 - .../src/pages/Notifications.vue | 131 - .../pages/Notifications.vue:Zone.Identifier | 3 - .../src/pages/Overview.vue | 273 - .../src/pages/Overview.vue:Zone.Identifier | 3 - .../src/pages/TableList.vue | 115 - .../src/pages/TableList.vue:Zone.Identifier | 3 - .../src/pages/Typography.vue | 98 - .../src/pages/Typography.vue:Zone.Identifier | 3 - .../src/pages/Upgrade.vue | 90 - .../src/pages/Upgrade.vue:Zone.Identifier | 3 - .../src/pages/UserProfile.vue | 31 - .../src/pages/UserProfile.vue:Zone.Identifier | 3 - .../src/pages/UserProfile/EditProfileForm.vue | 134 - .../EditProfileForm.vue:Zone.Identifier | 3 - .../src/pages/UserProfile/UserCard.vue | 65 - .../UserProfile/UserCard.vue:Zone.Identifier | 3 - .../src/registerServiceWorker.js | 32 - .../registerServiceWorker.js:Zone.Identifier | 3 - .../src/routes/routes.js | 80 - .../src/routes/routes.js:Zone.Identifier | 3 - .../vue.config.js | 44 - 276 files changed, 22532 deletions(-) delete mode 160000 Cypress-Program delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 vue-light-bootstrap-dashboard-master/.babelrc delete mode 100644 vue-light-bootstrap-dashboard-master/.editorconfig delete mode 100644 vue-light-bootstrap-dashboard-master/.eslintrc delete mode 100644 vue-light-bootstrap-dashboard-master/.github/workflows/main.yml delete mode 100644 vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/.gitignore delete mode 100644 vue-light-bootstrap-dashboard-master/.npmrc delete mode 100644 vue-light-bootstrap-dashboard-master/.postcssrc.js delete mode 100644 vue-light-bootstrap-dashboard-master/CHANGELOG.md delete mode 100644 vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md delete mode 100644 vue-light-bootstrap-dashboard-master/CONTRIBUTING.md delete mode 100644 vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md delete mode 100644 vue-light-bootstrap-dashboard-master/LICENSE delete mode 100644 vue-light-bootstrap-dashboard-master/README.md delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/demo.css delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/documentation.css delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/apple-icon.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/back.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/back.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/favicon.png delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/favicon.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/img/tim-logo.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html delete mode 100644 vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/intelij.webpack.js delete mode 100644 vue-light-bootstrap-dashboard-master/package.json delete mode 100644 vue-light-bootstrap-dashboard-master/public/.gitkeep delete mode 100644 vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/Dashboard.PNG delete mode 100644 vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/favicon.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/default-avatar.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.ico delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-512x512.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-76x76.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/msapplication-icon-144x144.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/mstile-150x150.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/mask.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/new_logo.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/vue-logo.png delete mode 100644 vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/index.html delete mode 100644 vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/manifest.json delete mode 100644 vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/public/robots.txt delete mode 100644 vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/App.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/css/demo.css delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2 delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Table.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/index.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalComponents.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalDirectives.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/Content.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/main.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Icons.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Overview.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/TableList.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Typography.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/routes/routes.js delete mode 100644 vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/vue.config.js diff --git a/Cypress-Program b/Cypress-Program deleted file mode 160000 index 43e2f5c..0000000 --- a/Cypress-Program +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 43e2f5c3ee7bc9b3ced4ff4ca8d65094403585c7 diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e29be4d..0000000 --- a/package-lock.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "name": "4team_final_MainVue", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "axios": "^1.6.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index a1af0ea..0000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "axios": "^1.6.8" - } -} diff --git a/vue-light-bootstrap-dashboard-master/.babelrc b/vue-light-bootstrap-dashboard-master/.babelrc deleted file mode 100644 index 60e0e6e..0000000 --- a/vue-light-bootstrap-dashboard-master/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@vue/app", - { - "polyfills": ["es7.object.entries", "es6.promise"] - } - ] - ] -} diff --git a/vue-light-bootstrap-dashboard-master/.editorconfig b/vue-light-bootstrap-dashboard-master/.editorconfig deleted file mode 100644 index 9d08a1a..0000000 --- a/vue-light-bootstrap-dashboard-master/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/vue-light-bootstrap-dashboard-master/.eslintrc b/vue-light-bootstrap-dashboard-master/.eslintrc deleted file mode 100644 index 125c71b..0000000 --- a/vue-light-bootstrap-dashboard-master/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "root": true, - "extends": [ - "plugin:vue/essential" - ] -} diff --git a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml deleted file mode 100644 index 1c9daaf..0000000 --- a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Autocloser -on: [issues] -jobs: - autoclose: - runs-on: ubuntu-latest - steps: - - name: Issue auto-closer - uses: roots/issue-closer-action@v1.1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow the bellow rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/vue-light-bootstrap-dashboard\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉  https://www.creative-tim.com/bundles\n👉  https://www.creative-tim.com\n\n\n
\n\n" - issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) diff --git a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier b/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/.github/workflows/main.yml:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/.gitignore b/vue-light-bootstrap-dashboard-master/.gitignore deleted file mode 100644 index 971f8bb..0000000 --- a/vue-light-bootstrap-dashboard-master/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -.DS_Store -node_modules/ -package-lock.json -yarn.lock -dist/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* -test/unit/coverage - -# Editor directories and files -.idea -*.suo -*.ntvs* -*.njsproj -*.sln diff --git a/vue-light-bootstrap-dashboard-master/.npmrc b/vue-light-bootstrap-dashboard-master/.npmrc deleted file mode 100644 index e9ee3cb..0000000 --- a/vue-light-bootstrap-dashboard-master/.npmrc +++ /dev/null @@ -1 +0,0 @@ -legacy-peer-deps=true \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/.postcssrc.js b/vue-light-bootstrap-dashboard-master/.postcssrc.js deleted file mode 100644 index 09948d6..0000000 --- a/vue-light-bootstrap-dashboard-master/.postcssrc.js +++ /dev/null @@ -1,8 +0,0 @@ -// https://github.com/michael-ciniawsky/postcss-load-config - -module.exports = { - "plugins": { - // to edit target browsers: use "browserslist" field in package.json - "autoprefixer": {} - } -} diff --git a/vue-light-bootstrap-dashboard-master/CHANGELOG.md b/vue-light-bootstrap-dashboard-master/CHANGELOG.md deleted file mode 100644 index 19ec314..0000000 --- a/vue-light-bootstrap-dashboard-master/CHANGELOG.md +++ /dev/null @@ -1,19 +0,0 @@ -# Change Log - -## [2.1.0] 2023-01-10 - -- Update dependencies and devDependencies -- Migrate from `node-sass` to `sass` -- Fix installation issue when running `npm i` - -## [2.0.0] 2019-02-14 - -- Update to Bootstrap 4 -- Update to Vue CLI 3 -- Several UI fixes & improvements -- Cleanup and simplify code structure -- Add pwa support - -## [1.0.0] 2017-06-18 - -### Stable Original Release diff --git a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md b/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md deleted file mode 100644 index 15631cc..0000000 --- a/vue-light-bootstrap-dashboard-master/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at joracristi@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md b/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md deleted file mode 100644 index 3112703..0000000 --- a/vue-light-bootstrap-dashboard-master/CONTRIBUTING.md +++ /dev/null @@ -1,10 +0,0 @@ -* Fork the repository -* Clone it on your PC -* `npm install` or `yarn install` -* Make changes, commit and open a PR - -### Notes -* Please don't use jQuery or jQuery based plugins since there are many pure Vue alternatives -* Write unit tests for your custom components. See fgInput.spec and paper-table.spec - -For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). diff --git a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md b/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md deleted file mode 100644 index 5cdc987..0000000 --- a/vue-light-bootstrap-dashboard-master/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/LICENSE b/vue-light-bootstrap-dashboard-master/LICENSE deleted file mode 100644 index 97fc72f..0000000 --- a/vue-light-bootstrap-dashboard-master/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Cristi Jora - -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/vue-light-bootstrap-dashboard-master/README.md b/vue-light-bootstrap-dashboard-master/README.md deleted file mode 100644 index 64223ba..0000000 --- a/vue-light-bootstrap-dashboard-master/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# [Vue Light Bootstrap Dashboard](http://vuejs.creative-tim.com/vue-light-bootstrap-dashboard) [![version][version-badge]][changelog] [![license][license-badge]][license] - -> Admin dashboard based on light bootstrap dashboard UI template + vue-router - -This project is a vue version of [Light bootstrap dashboard](https://www.creative-tim.com/product/light-bootstrap-dashboard) -designed for vue js. The dashboard includes Bootstrap 4, vue-router, chartist, google-maps and several other plugins/components. - -Check the [Live Demo here](http://vuejs.creative-tim.com/vue-light-bootstrap-dashboard). - -![](public/Dashboard.PNG) - -## :rocket: Getting started - -Vue Light Bootstrap Dashboard is built on top of Bootstrap 4, Vuejs and Vue-router. To get started do the following steps: - -1. Download the project -2. Make sure you have node.js (https://nodejs.org/en/) installed -3. Type `npm install` in the source folder where `package.json` is located -4. Type `npm run dev` to start the development server - -The repo uses [vue-cli](https://github.com/vuejs/vue-cli) scaffolding which takes care of the development setup with webpack and all the necessary modern tools to make web development faster and easier. - -## [Documentation](https://demos.creative-tim.com/vue-light-bootstrap-dashboard/documentation/#/buttons) - -## :cloud: Build Setup - -### install dependencies - -`npm install` - -### serve with hot reload at localhost:8000 - -`npm run dev` - -### build for production with minification - -`npm run build` - -### run unit tests - -`npm run unit` - -### run and watch unit tests - -`npm run unit:watch` - -## :clipboard: Contribution guide - -- `npm install` or `yarn install` -- Please don't use jQuery or jQuery based plugins since there are many pure Vue alternatives - -For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). - -[changelog]: ./CHANGELOG.md -[license]: ./LICENSE.md -[version-badge]: https://img.shields.io/badge/version-2.1.0-blue.svg -[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css deleted file mode 100644 index 036b33e..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css +++ /dev/null @@ -1,73 +0,0 @@ -@media (min-width: 992px){ - .typo-line{ - padding-left: 140px; - margin-bottom: 40px; - position: relative; - } - - .typo-line .category{ - transform: translateY(-50%); - top: 50%; - left: 0px; - position: absolute; - } -} - -.icon-section { - margin: 0 0 3em; - clear: both; - overflow: hidden; -} -.icon-container { - width: 240px; - padding: .7em 0; - float: left; - position: relative; - text-align: left; -} -.icon-container [class^="ti-"], -.icon-container [class*=" ti-"] { - color: #000; - position: absolute; - margin-top: 3px; - transition: .3s; -} -.icon-container:hover [class^="ti-"], -.icon-container:hover [class*=" ti-"] { - font-size: 2.2em; - margin-top: -5px; -} -.icon-container:hover .icon-name { - color: #000; -} -.icon-name { - color: #aaa; - margin-left: 35px; - font-size: .8em; - transition: .3s; -} -.icon-container:hover .icon-name { - margin-left: 45px; -} - -.places-buttons .btn{ - margin-bottom: 30px -} -.sidebar .nav > li.active-pro{ - position: absolute; - width: 100%; - bottom: 10px; -} -.sidebar .nav > li.active-pro a{ - background: rgba(255, 255, 255, 0.14); - opacity: 1; - color: #FFFFFF; -} - -.table-upgrade td:nth-child(2), -.table-upgrade td:nth-child(3){ - text-align: center; -} -body.nude{ - background-color: #f4f3ef; -} diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/css/demo.css:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css deleted file mode 100644 index acd5bef..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css +++ /dev/null @@ -1,203 +0,0 @@ -.tim-row{ - padding-top: 60px; -} -pre.prettyprint{ - background-color: #eee; - border: 0px; - margin-bottom: 0; - margin-top: 20px; - padding: 20px; - text-align: left; -} -.atv, .str{ - color: #05AE0E; -} -.tag, .pln, .kwd{ - color: #3472F7; -} -.atn{ - color: #2C93FF; -} -.pln{ - color: #333; -} -.com{ - color: #999; -} -.space-top{ - margin-top: 50px; -} -.btn-primary .caret{ - border-top-color: #3472F7; - color: #3472F7; -} -.area-line{ - border: 1px solid #999; - border-left: 0; - border-right: 0; - color: #666; - display: block; - margin-top: 20px; - padding: 8px 0; - text-align: center; -} -.area-line a{ - color: #666; -} -.container-fluid{ - padding-right: 15px; - padding-left: 15px; -} -.logo-container .logo{ - overflow: hidden; - border-radius: 50%; - border: 1px solid #333333; - width: 50px; - float: left; -} -.header-wrapper { - position: relative; - height: 100%; -} - -.header-wrapper .navbar { - border-radius: 0; - position: absolute; - width: 100%; - z-index: 3; -} -.header-wrapper .header { - background-color: #ff8f5e; - background-position: center center; - background-size: cover; - height: 100%; - overflow: hidden; - position: absolute; - width: 100%; - z-index: 1; -} -.header-wrapper .header .filter::after { - content: ""; - display: block; - height: 100%; - left: 0; - opacity: 0.77; - position: absolute; - top: 0; - width: 100%; - z-index: 2; -} -.header-wrapper .title-container{ - color: #fff; - position: relative; - top: 30%; - z-index: 3; - -} -.logo-container .brand{ - font-size: 18px; - color: #FFFFFF; - line-height: 20px; - float: left; - margin-left: 10px; - margin-top: 5px; - width: 50px; - height: 50px; -} -.logo-container{ - margin-top: 10px; - margin-left: 15px; -} -.logo-container .logo img{ - width: 100%; -} -.navbar-small .logo-container .brand{ - color: #333333; -} -.fixed-section{ - top: 90px; - max-height: 493px; - overflow: scroll; - border-bottom: 1px solid rgba(220,220,220, .6); -} - -.fixed-section ul{ - padding: 0; -} - -.fixed-section.affix-top{ - margin-top: 90px; -} - -.fixed-section ul li{ - list-style: none; -} -.fixed-section li a{ - font-size: 14px; - padding: 2px; - display: block; - color: #666666; -} -.fixed-section li a.active{ - color: #00bbff; -} -.fixed-section.float{ - position: fixed; - top: 100px; - width: 200px; - margin-top: 0; -} -.copyright { - color: #777777; - padding: 10px 15px; - font-size: 14px; - margin: 15px 3px; - line-height: 20px; - text-align: center; -} - -.table-bigboy .img-container{ - width: 130px; - height: 85px; -} - -.table-bigboy .td-name{ - min-width: 170px; -} -#buttons-row .btn{ - margin-bottom: 15px; -} - -.navbar .navbar-nav > li > a.btn.btn-white, -.navbar .navbar-nav > li > a.btn.btn-white:hover, -.navbar .navbar-nav > li > a.btn.btn-white:focus{ - color: #FFFFFF; -} - -@media (min-width: 992px){ - .navbar { - min-height: 70px; - } -} - -.header-full{ - min-height: 100vh; - height: auto; - max-height: 999px; -} -.filter{ - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - width: 100%; - height: 100%; - z-index: 0; - -} -.filter:after{ - background: #0a6715; - background: rgba(0, 0, 0, 0) linear-gradient(to bottom, #0ab961 0%, #0a6715 100%) repeat scroll 0 0 / 150% 150%; - height: 100% !important; -} diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/css/documentation.css:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css b/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css deleted file mode 100644 index bf1ea4c..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/css/light-dashboard.css +++ /dev/null @@ -1,11558 +0,0 @@ -/*! - - ========================================================= - * Paper Dashboard PRO - V1.2.1 - ========================================================= - - * Product Page: https://www.creative-tim.com/product/paper-dashboard-pro - * Available with purchase of license from https://www.creative-tim.com/product/paper-dashboard-pro - * Copyright 2017 Creative Tim (https://www.creative-tim.com) - * License Creative Tim (https://www.creative-tim.com/license) - - ========================================================= - -*/ -/* light colors - used for select dropdown */ -/* Social buttons */ -.ct-blue { - stroke: #7A9E9F !important; -} - -.ct-azure { - stroke: #68B3C8 !important; -} - -.ct-green { - stroke: #7AC29A !important; -} - -.ct-orange { - stroke: #F3BB45 !important; -} - -.ct-red { - stroke: #EB5E28 !important; -} - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2015 Daniel Eden -*/ -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -.animated.bounceIn, -.animated.bounceOut { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -.animated.flipOutX, -.animated.flipOutY { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -@-webkit-keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} -@keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} -@keyframes fadeOutDown { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} -@keyframes fadeOutUp { - from { - opacity: 1; - } - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -body.swal2-in { - overflow-y: hidden; -} - -body.swal2-iosfix { - position: fixed; - left: 0; - right: 0; -} - -.swal2-container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: fixed; - top: 0; - left: 0; - bottom: 0; - right: 0; - padding: 10px; - background-color: transparent; - z-index: 1060; -} - -.swal2-container:not(.swal2-in) { - pointer-events: none; -} - -.swal2-container.swal2-fade { - -webkit-transition: background-color .1s; - transition: background-color .1s; -} - -.swal2-container.swal2-in { - background-color: rgba(0, 0, 0, 0.4); -} - -.swal2-modal { - background-color: #FFFFFF; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - border-radius: 5px; - box-sizing: border-box; - text-align: center; - margin: auto; - overflow-x: hidden; - overflow-y: auto; - display: none; - position: relative; -} -.swal2-modal button { - margin: 0 5px; -} -.swal2-modal .form-control { - max-width: 300px; - margin: 0 auto; -} - -.swal2-modal:focus { - outline: none; -} - -.swal2-modal.swal2-loading { - overflow-y: hidden; -} - -.swal2-modal .swal2-title { - color: #595959; - font-size: 30px; - text-align: center; - font-weight: 600; - text-transform: none; - position: relative; - margin: 0; - padding: 0; - line-height: 60px; - display: block; -} - -.swal2-modal .swal2-spacer { - height: 10px; - color: transparent; - border: 0; -} - -.swal2-modal .swal2-styled { - border: 0; - border-radius: 3px; - box-shadow: none; - color: #fff; - cursor: pointer; - font-size: 17px; - font-weight: 500; - margin: 0 5px; - padding: 10px 32px; -} - -.swal2-modal .swal2-styled:not(.swal2-loading)[disabled] { - opacity: .4; - cursor: no-drop; -} - -.swal2-modal .swal2-styled.swal2-loading { - box-sizing: border-box; - border: 4px solid transparent; - border-color: transparent; - width: 40px; - height: 40px; - padding: 0; - margin: -2px 30px; - vertical-align: top; - background-color: transparent !important; - color: transparent; - cursor: default; - border-radius: 100%; - -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; - animation: rotate-loading 1.5s linear 0s infinite normal; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.swal2-modal :not(.swal2-styled).swal2-loading::after { - display: inline-block; - content: ''; - margin-left: 5px; - vertical-align: -1px; - height: 6px; - width: 6px; - border: 3px solid #999999; - border-right-color: transparent; - border-radius: 50%; - -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; - animation: rotate-loading 1.5s linear 0s infinite normal; -} - -.swal2-modal .swal2-image { - margin: 20px auto; - max-width: 100%; -} - -.swal2-modal .swal2-close { - font-size: 36px; - line-height: 36px; - font-family: serif; - position: absolute; - top: 5px; - right: 13px; - cursor: pointer; - color: #cccccc; - -webkit-transition: color .1s ease; - transition: color .1s ease; -} - -.swal2-modal .swal2-close:hover { - color: #d55; -} - -.swal2-modal > .swal2-input, -.swal2-modal > .swal2-file, -.swal2-modal > .swal2-textarea, -.swal2-modal > .swal2-select, -.swal2-modal > .swal2-radio, -.swal2-modal > .swal2-checkbox { - display: none; -} - -.swal2-modal .swal2-content { - font-size: 18px; - text-align: center; - font-weight: 300; - position: relative; - float: none; - margin: 0; - padding: 0; - line-height: normal; - color: #545454; -} - -.swal2-modal .swal2-input, -.swal2-modal .swal2-file, -.swal2-modal .swal2-textarea, -.swal2-modal .swal2-select, -.swal2-modal .swal2-radio, -.swal2-modal .swal2-checkbox { - margin: 20px auto; -} - -.swal2-modal .swal2-input, -.swal2-modal .swal2-file, -.swal2-modal .swal2-textarea { - width: 100%; - box-sizing: border-box; - border-radius: 3px; - border: 1px solid #d9d9d9; - font-size: 18px; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06); - -webkit-transition: border-color box-shadow .3s; - transition: border-color box-shadow .3s; -} - -.swal2-modal .swal2-input.swal2-inputerror, -.swal2-modal .swal2-file.swal2-inputerror, -.swal2-modal .swal2-textarea.swal2-inputerror { - border-color: #f06e57; -} - -.swal2-modal .swal2-input:focus, -.swal2-modal .swal2-file:focus, -.swal2-modal .swal2-textarea:focus { - outline: none; - box-shadow: 0 0 3px #c4e6f5; - border: 1px solid #b4dbed; -} - -.swal2-modal .swal2-input:focus::-webkit-input-placeholder, -.swal2-modal .swal2-file:focus::-webkit-input-placeholder, -.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder { - -webkit-transition: opacity .3s .03s ease; - transition: opacity .3s .03s ease; - opacity: .8; -} - -.swal2-modal .swal2-input:focus::-moz-placeholder, -.swal2-modal .swal2-file:focus::-moz-placeholder, -.swal2-modal .swal2-textarea:focus::-moz-placeholder { - -webkit-transition: opacity .3s .03s ease; - transition: opacity .3s .03s ease; - opacity: .8; -} - -.swal2-modal .swal2-input:focus:-ms-input-placeholder, -.swal2-modal .swal2-file:focus:-ms-input-placeholder, -.swal2-modal .swal2-textarea:focus:-ms-input-placeholder { - -webkit-transition: opacity .3s .03s ease; - transition: opacity .3s .03s ease; - opacity: .8; -} - -.swal2-modal .swal2-input:focus::placeholder, -.swal2-modal .swal2-file:focus::placeholder, -.swal2-modal .swal2-textarea:focus::placeholder { - -webkit-transition: opacity .3s .03s ease; - transition: opacity .3s .03s ease; - opacity: .8; -} - -.swal2-modal .swal2-input::-webkit-input-placeholder, -.swal2-modal .swal2-file::-webkit-input-placeholder, -.swal2-modal .swal2-textarea::-webkit-input-placeholder { - color: #e6e6e6; -} - -.swal2-modal .swal2-input::-moz-placeholder, -.swal2-modal .swal2-file::-moz-placeholder, -.swal2-modal .swal2-textarea::-moz-placeholder { - color: #e6e6e6; -} - -.swal2-modal .swal2-input:-ms-input-placeholder, -.swal2-modal .swal2-file:-ms-input-placeholder, -.swal2-modal .swal2-textarea:-ms-input-placeholder { - color: #e6e6e6; -} - -.swal2-modal .swal2-input::placeholder, -.swal2-modal .swal2-file::placeholder, -.swal2-modal .swal2-textarea::placeholder { - color: #e6e6e6; -} - -.swal2-modal .swal2-range input { - float: left; - width: 80%; -} - -.swal2-modal .swal2-range output { - float: right; - width: 20%; - font-size: 20px; - font-weight: 600; - text-align: center; -} - -.swal2-modal .swal2-range input, -.swal2-modal .swal2-range output { - height: 43px; - line-height: 43px; - vertical-align: middle; - margin: 20px auto; - padding: 0; -} - -.swal2-modal .swal2-input { - height: 43px; - padding: 0 12px; -} - -.swal2-modal .swal2-input[type='number'] { - max-width: 150px; -} - -.swal2-modal .swal2-file { - font-size: 20px; -} - -.swal2-modal .swal2-textarea { - height: 108px; - padding: 12px; -} - -.swal2-modal .swal2-select { - color: #545454; - font-size: inherit; - padding: 5px 10px; - min-width: 40%; - max-width: 100%; -} - -.swal2-modal .swal2-radio { - border: 0; -} - -.swal2-modal .swal2-radio label:not(:first-child) { - margin-left: 20px; -} - -.swal2-modal .swal2-radio input, -.swal2-modal .swal2-radio span { - vertical-align: middle; -} - -.swal2-modal .swal2-radio input { - margin: 0 3px 0 0; -} - -.swal2-modal .swal2-checkbox { - color: #545454; -} - -.swal2-modal .swal2-checkbox input, -.swal2-modal .swal2-checkbox span { - vertical-align: middle; -} - -.swal2-modal .swal2-validationerror { - background-color: #f0f0f0; - margin: 0 -20px; - overflow: hidden; - padding: 10px; - color: gray; - font-size: 16px; - font-weight: 300; - display: none; -} - -.swal2-modal .swal2-validationerror::before { - content: '!'; - display: inline-block; - width: 24px; - height: 24px; - border-radius: 50%; - background-color: #ea7d7d; - color: #fff; - line-height: 24px; - text-align: center; - margin-right: 10px; -} - -@supports (-ms-accelerator: true) { - .swal2-range input { - width: 100% !important; - } - - .swal2-range output { - display: none; - } -} -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - .swal2-range input { - width: 100% !important; - } - - .swal2-range output { - display: none; - } -} -.swal2-icon { - width: 80px; - height: 80px; - border: 4px solid transparent; - border-radius: 50%; - margin: 20px auto 30px; - padding: 0; - position: relative; - box-sizing: content-box; - cursor: default; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.swal2-icon.swal2-error { - border-color: #f27474; -} - -.swal2-icon.swal2-error .x-mark { - position: relative; - display: block; -} - -.swal2-icon.swal2-error .line { - position: absolute; - height: 5px; - width: 47px; - background-color: #f27474; - display: block; - top: 37px; - border-radius: 2px; -} - -.swal2-icon.swal2-error .line.left { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - left: 17px; -} - -.swal2-icon.swal2-error .line.right { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - right: 16px; -} - -.swal2-icon.swal2-warning .body { - position: absolute; - width: 5px; - height: 47px; - left: 50%; - top: 10px; - border-radius: 2px; - margin-left: -2px; - background-color: #FFA534; -} - -.swal2-icon.swal2-warning .dot { - position: absolute; - width: 7px; - height: 7px; - border-radius: 50%; - margin-left: -3px; - left: 50%; - bottom: 10px; - background-color: #FFA534; -} - -.swal2-icon.swal2-warning { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - color: #F3BB45; - border-color: #F3BB45; - font-size: 60px; - line-height: 80px; - text-align: center; -} - -.swal2-icon.swal2-info { - font-family: 'Open Sans', sans-serif; - color: #68B3C8; - border-color: #68B3C8; - font-size: 60px; - line-height: 80px; - text-align: center; -} - -.swal2-icon.swal2-question { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - color: #87adbd; - border-color: #c9dae1; - font-size: 60px; - line-height: 80px; - text-align: center; -} - -.swal2-icon.swal2-success { - border-color: #7AC29A; -} - -.swal2-icon.swal2-success::before, .swal2-icon.swal2-success::after { - content: ''; - border-radius: 50%; - position: absolute; - width: 60px; - height: 120px; - background: #fff; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} - -.swal2-icon.swal2-success::before { - border-radius: 120px 0 0 120px; - top: -7px; - left: -33px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: 60px 60px; - transform-origin: 60px 60px; -} - -.swal2-icon.swal2-success::after { - border-radius: 0 120px 120px 0; - top: -11px; - left: 30px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: 0 60px; - transform-origin: 0 60px; -} - -.swal2-icon.swal2-success .placeholder { - width: 80px; - height: 80px; - border: 4px solid rgba(165, 220, 134, 0.2); - border-radius: 50%; - box-sizing: content-box; - position: absolute; - left: -4px; - top: -4px; - z-index: 2; -} - -.swal2-icon.swal2-success .fix { - width: 7px; - height: 90px; - background-color: #fff; - position: absolute; - left: 28px; - top: 8px; - z-index: 1; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.swal2-icon.swal2-success .line { - height: 5px; - background-color: #a5dc86; - display: block; - border-radius: 2px; - position: absolute; - z-index: 2; -} - -.swal2-icon.swal2-success .line.tip { - width: 25px; - left: 14px; - top: 46px; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} - -.swal2-icon.swal2-success .line.long { - width: 47px; - right: 8px; - top: 38px; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.swal2-progresssteps { - font-weight: 600; - margin: 0 0 20px; - padding: 0; -} - -.swal2-progresssteps li { - display: inline-block; - position: relative; -} - -.swal2-progresssteps .swal2-progresscircle { - background: #3085d6; - border-radius: 2em; - color: #fff; - height: 2em; - line-height: 2em; - text-align: center; - width: 2em; - z-index: 20; -} - -.swal2-progresssteps .swal2-progresscircle:first-child { - margin-left: 0; -} - -.swal2-progresssteps .swal2-progresscircle:last-child { - margin-right: 0; -} - -.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep { - background: #3085d6; -} - -.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle { - background: #add8e6; -} - -.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline { - background: #add8e6; -} - -.swal2-progresssteps .swal2-progressline { - background: #3085d6; - height: .4em; - margin: 0 -1px; - z-index: 10; -} - -[class^='swal2'] { - -webkit-tap-highlight-color: transparent; -} - -@-webkit-keyframes showSweetAlert { - 0% { - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - 45% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 80% { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@keyframes showSweetAlert { - 0% { - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - 45% { - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - 80% { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@-webkit-keyframes hideSweetAlert { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } - 100% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - opacity: 0; - } -} -@keyframes hideSweetAlert { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } - 100% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - opacity: 0; - } -} -.swal2-show { - -webkit-animation: showSweetAlert 0.3s; - animation: showSweetAlert 0.3s; -} - -.swal2-show.swal2-noanimation { - -webkit-animation: none; - animation: none; -} - -.swal2-hide { - -webkit-animation: hideSweetAlert 0.15s forwards; - animation: hideSweetAlert 0.15s forwards; -} - -.swal2-hide.swal2-noanimation { - -webkit-animation: none; - animation: none; -} - -@-webkit-keyframes animate-success-tip { - 0% { - width: 0; - left: 1px; - top: 19px; - } - 54% { - width: 0; - left: 1px; - top: 19px; - } - 70% { - width: 50px; - left: -8px; - top: 37px; - } - 84% { - width: 17px; - left: 21px; - top: 48px; - } - 100% { - width: 25px; - left: 14px; - top: 45px; - } -} -@keyframes animate-success-tip { - 0% { - width: 0; - left: 1px; - top: 19px; - } - 54% { - width: 0; - left: 1px; - top: 19px; - } - 70% { - width: 50px; - left: -8px; - top: 37px; - } - 84% { - width: 17px; - left: 21px; - top: 48px; - } - 100% { - width: 25px; - left: 14px; - top: 45px; - } -} -@-webkit-keyframes animate-success-long { - 0% { - width: 0; - right: 46px; - top: 54px; - } - 65% { - width: 0; - right: 46px; - top: 54px; - } - 84% { - width: 55px; - right: 0; - top: 35px; - } - 100% { - width: 47px; - right: 8px; - top: 38px; - } -} -@keyframes animate-success-long { - 0% { - width: 0; - right: 46px; - top: 54px; - } - 65% { - width: 0; - right: 46px; - top: 54px; - } - 84% { - width: 55px; - right: 0; - top: 35px; - } - 100% { - width: 47px; - right: 8px; - top: 38px; - } -} -@-webkit-keyframes rotatePlaceholder { - 0% { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - } - 5% { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - } - 12% { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } - 100% { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } -} -@keyframes rotatePlaceholder { - 0% { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - } - 5% { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - } - 12% { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } - 100% { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } -} -.animate-success-tip { - -webkit-animation: animate-success-tip 0.75s; - animation: animate-success-tip 0.75s; -} - -.animate-success-long { - -webkit-animation: animate-success-long 0.75s; - animation: animate-success-long 0.75s; -} - -.swal2-success.animate::after { - -webkit-animation: rotatePlaceholder 4.25s ease-in; - animation: rotatePlaceholder 4.25s ease-in; -} - -@-webkit-keyframes animate-error-icon { - 0% { - -webkit-transform: rotateX(100deg); - transform: rotateX(100deg); - opacity: 0; - } - 100% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } -} -@keyframes animate-error-icon { - 0% { - -webkit-transform: rotateX(100deg); - transform: rotateX(100deg); - opacity: 0; - } - 100% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } -} -.animate-error-icon { - -webkit-animation: animate-error-icon 0.5s; - animation: animate-error-icon 0.5s; -} - -@-webkit-keyframes animate-x-mark { - 0% { - -webkit-transform: scale(0.4); - transform: scale(0.4); - margin-top: 26px; - opacity: 0; - } - 50% { - -webkit-transform: scale(0.4); - transform: scale(0.4); - margin-top: 26px; - opacity: 0; - } - 80% { - -webkit-transform: scale(1.15); - transform: scale(1.15); - margin-top: -6px; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - margin-top: 0; - opacity: 1; - } -} -@keyframes animate-x-mark { - 0% { - -webkit-transform: scale(0.4); - transform: scale(0.4); - margin-top: 26px; - opacity: 0; - } - 50% { - -webkit-transform: scale(0.4); - transform: scale(0.4); - margin-top: 26px; - opacity: 0; - } - 80% { - -webkit-transform: scale(1.15); - transform: scale(1.15); - margin-top: -6px; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - margin-top: 0; - opacity: 1; - } -} -.animate-x-mark { - -webkit-animation: animate-x-mark 0.5s; - animation: animate-x-mark 0.5s; -} - -@-webkit-keyframes pulse-warning { - 0% { - border-color: #FAE6A4; - } - 100% { - border-color: #FFA534; - } -} -@keyframes pulse-warning { - 0% { - border-color: #FAE6A4; - } - 100% { - border-color: #FFA534; - } -} -.pulse-warning { - -webkit-animation: pulse-warning 0.75s infinite alternate; - animation: pulse-warning 0.75s infinite alternate; -} - -@-webkit-keyframes rotate-loading { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@keyframes rotate-loading { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -/** - * @author zhixin wen - * version: 1.8.1 - * https://github.com/wenzhixin/bootstrap-table/ - */ -.bootstrap-table .table { - margin-bottom: 0 !important; - border-bottom: 1px solid #cfcfca; - border-collapse: collapse !important; - border-radius: 1px; -} - -.bootstrap-table .table, -.bootstrap-table .table > tbody > tr > th, -.bootstrap-table .table > tfoot > tr > th, -.bootstrap-table .table > thead > tr > td, -.bootstrap-table .table > tbody > tr > td, -.bootstrap-table .table > tfoot > tr > td { - padding: 8px !important; -} - -.bootstrap-table .table > tbody > .selected { - background-color: rgba(122, 158, 159, 0.2); -} - -.bootstrap-table .table.table-no-bordered > thead > tr > th, -.bootstrap-table .table.table-no-bordered > tbody > tr > td { - border-right: 2px solid transparent; -} - -.fixed-table-container { - position: relative; - clear: both; -} - -.fixed-table-container.table-no-bordered { - border: 1px solid transparent; -} - -.fixed-table-footer, -.fixed-table-header { - overflow: hidden; -} - -.fixed-table-footer { - border-top: 1px solid #cfcfca; -} - -.fixed-table-body { - height: 100%; - overflow: auto; -} - -.fixed-table-container table { - width: 100%; -} - -.fixed-table-container thead th { - height: 0; - padding: 0; - margin: 0; -} - -.fixed-table-container thead th:first-child { - border-left: none; -} - -.fixed-table-container thead th .th-inner { - padding: 0 8px; - line-height: 24px; - vertical-align: top; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.fixed-table-container thead th .sortable { - cursor: pointer; - background-repeat: no-repeat; - padding-right: 30px; -} - -.fixed-table-container thead th .both { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC"); - background-position: right 2px; -} - -.fixed-table-container thead th .asc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAACASURBVHja7NKhDcJQFIbRV1MSEqaoYwYMYyARR6HZowzAHqguUolHYEgxD9MmTYPpA1JEb/KZK476Q4wxfKvwc6x/WKJE3v+nYkc8cfgIwxpXRNQokjBkOLdQ1wlZCrbFbYDdsRmFYYVqAHVdsBiD7dHg8aYGu2l2NmMz9s/YawDpU8qkYQTHqgAAAABJRU5ErkJggg=="); - background-position: right 5px; -} - -.fixed-table-container thead th .desc { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAG2YAABzjgAA+swAAIT6AAB5gQAA/RMAADBtAAASKQ0eJk4AAACFSURBVHja7NKhDcJQFIbRWwMJCVPgmKGGMZCIo9DsAQOwRxWLIPEIDCnmYR4JaSp4DYKQis/8NznqRkopvlWM2Ij9BYY1Wtx7arEpwaZokHo6Yf4xFhGBGrcOdMUqIqIUq3DoYEdUxVgGFzhn6ILl61aMZXCLB3bv+1Bsgj1mg7CfeNrnAMXSyqQtsCNeAAAAAElFTkSuQmCC"); - background-position: right 0px; -} - -.fixed-table-container th.detail { - width: 30px; -} - -.fixed-table-container tbody tr:first-child td { - border-top: none; -} - -.fixed-table-container tbody td:first-child { - border-left: none; -} - -/* the same color with .active */ -.fixed-table-container tbody .selected td { - background-color: rgba(245, 245, 245, 0.34); -} - -.fixed-table-container .bs-checkbox { - text-align: center; -} - -.fixed-table-container .bs-checkbox .th-inner { - padding: 8px 0; -} - -.fixed-table-container input[type="radio"], -.fixed-table-container input[type="checkbox"] { - margin: 0 auto !important; - cursor: pointer; -} - -.fixed-table-container .no-records-found { - text-align: center; - background-color: #FFFFFF !important; - height: 340px; - border-radius: 10px; - width: 100%; - vertical-align: middle; -} - -.fixed-table-container .no-records-found td { - font-weight: 300; - font-size: 1.5em; -} - -.fixed-table-pagination div.pagination, -.fixed-table-pagination .pagination-detail { - margin-top: 10px; - margin-bottom: 10px; -} - -.fixed-table-pagination div.pagination .pagination { - margin: 0; -} - -.fixed-table-pagination .pagination a { - padding: 6px 12px; - line-height: 1.428571429; -} - -.fixed-table-pagination .pagination-info { - line-height: 34px; -} - -.fixed-table-pagination .btn-group { - position: relative; - display: inline-block; - vertical-align: middle; -} - -.fixed-table-pagination .page-list { - display: inline-block; -} - -.fixed-table-toolbar { - padding: 5px 0; -} - -.fixed-table-toolbar .columns-left { - margin-right: 5px; -} - -.fixed-table-toolbar .columns-right { - margin-left: 5px; -} - -.fixed-table-toolbar .columns .btn { - margin: 0 2px; - border-radius: 30px; -} - -.columns-right .btn-group .btn { - margin-right: 0; -} - -.columns-left .btn:first-child { - margin-left: 0; -} - -.pull-right .pagination .page-last a { - margin-right: 0; -} - -.pull-left .pagination .page-first a { - margin-left: 0; -} - -.bootstrap-table .td-actions .th-inner { - padding-right: 17px; -} - -.fixed-table-toolbar .columns label { - display: block; - padding: 10px 20px; - border-bottom: 1px solid #E3E3E3; - clear: both; - margin-bottom: 0; - font-weight: normal; - line-height: 1.428571429; -} - -.fixed-table-toolbar .columns li:last-child label { - border-bottom: none; -} - -.fixed-table-toolbar .bars, -.fixed-table-toolbar .search, -.fixed-table-toolbar .columns { - position: relative; - margin-top: 10px; - margin-bottom: 10px; - line-height: 34px; -} - -.fixed-table-toolbar .search { - margin-left: 0; -} - -.fixed-table-pagination li.disabled a { - pointer-events: none; - cursor: default; -} - -.fixed-table-loading { - display: none; - position: absolute; - top: 42px; - right: 0; - bottom: 0; - left: 0; - z-index: 99; - background-color: #FFFFFF; - text-align: center; -} - -.fixed-table-body .card-view .title { - font-weight: bold; - display: inline-block; - min-width: 30%; - text-align: left !important; -} - -/* support bootstrap 2 */ -.fixed-table-body thead th .th-inner { - box-sizing: border-box; -} - -.table th, .table td { - vertical-align: middle; - box-sizing: border-box; -} - -.fixed-table-toolbar .btn-group > .btn-group { - display: inline-block; - margin-left: -1px !important; -} - -.fixed-table-toolbar .dropdown-menu label { - cursor: pointer; -} - -.fixed-table-toolbar .btn-group > .btn-group > .btn { - border-radius: 0; -} - -.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -/* support bootstrap 3 */ -.bootstrap-table .table thead > tr > th { - padding: 0; - margin: 0; -} - -.pull-right .dropdown-menu { - right: 0; - left: auto; -} - -/* calculate scrollbar width */ -p.fixed-table-scroll-inner { - width: 100%; - height: 200px; -} - -div.fixed-table-scroll-outer { - top: 0; - left: 0; - visibility: hidden; - width: 200px; - height: 150px; - overflow: hidden; -} - -.bootstrap-table .fixed-table-pagination:after { - display: table; - content: ""; - clear: both; -} -.bootstrap-table .fixed-table-pagination .page-list .btn { - border-radius: 30px; -} -.bootstrap-table .fixed-table-pagination .page-list .btn-group { - margin-right: 5px; -} -.bootstrap-table .fixed-table-pagination div.pagination, -.bootstrap-table .fixed-table-pagination .pagination-detail { - margin-top: 15px; - margin-bottom: 15px; -} -.bootstrap-table .table.table-striped > thead > tr > td, .bootstrap-table .table.table-striped > tbody > tr > td, .bootstrap-table .table.table-striped > tfoot > tr > td { - border: none; -} - -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; - border-collapse: separate !important; -} - -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -table.dataTable td.dataTables_empty, -table.dataTable th.dataTables_empty { - text-align: center; -} - -table.dataTable.nowrap th, -table.dataTable.nowrap td { - white-space: nowrap; -} - -div.dataTables_wrapper div.dataTables_length label { - font-weight: normal; - text-align: left; - white-space: nowrap; -} - -div.dataTables_wrapper div.dataTables_length select { - width: 75px; - display: inline-block; -} - -div.dataTables_wrapper div.dataTables_filter { - text-align: right; -} - -div.dataTables_wrapper div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; -} - -div.dataTables_wrapper div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; - width: auto; -} - -div.dataTables_wrapper div.dataTables_info { - padding-top: 8px; - white-space: nowrap; -} - -div.dataTables_wrapper div.dataTables_paginate { - margin: 0; - white-space: nowrap; - text-align: right; -} - -div.dataTables_wrapper div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; -} - -div.dataTables_wrapper div.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 200px; - margin-left: -100px; - margin-top: -26px; - text-align: center; - padding: 1em 0; -} - -table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, -table.dataTable thead > tr > td.sorting_asc, -table.dataTable thead > tr > td.sorting_desc, -table.dataTable thead > tr > td.sorting { - padding-right: 30px; -} - -table.dataTable thead > tr > th:active, -table.dataTable thead > tr > td:active { - outline: none; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; - position: relative; -} - -table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:after, -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - position: absolute; - bottom: 8px; - right: 8px; - display: block; - font-family: 'Glyphicons Halflings'; - opacity: 0.5; -} - -table.dataTable thead .sorting:after { - opacity: 0.2; - content: "\e150"; - /* sort */ -} - -table.dataTable thead .sorting_asc:after { - content: "\e155"; - /* sort-by-attributes */ -} - -table.dataTable thead .sorting_desc:after { - content: "\e156"; - /* sort-by-attributes-alt */ -} - -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - color: #eee; -} - -div.dataTables_scrollHead table.dataTable { - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody table thead .sorting:after, -div.dataTables_scrollBody table thead .sorting_asc:after, -div.dataTables_scrollBody table thead .sorting_desc:after { - display: none; -} - -div.dataTables_scrollBody table tbody tr:first-child th, -div.dataTables_scrollBody table tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - -@media screen and (max-width: 767px) { - div.dataTables_wrapper div.dataTables_length, - div.dataTables_wrapper div.dataTables_filter, - div.dataTables_wrapper div.dataTables_info, - div.dataTables_wrapper div.dataTables_paginate { - text-align: center; - } -} -table.dataTable.table-condensed > thead > tr > th { - padding-right: 20px; -} - -table.dataTable.table-condensed .sorting:after, -table.dataTable.table-condensed .sorting_asc:after, -table.dataTable.table-condensed .sorting_desc:after { - top: 6px; - right: 6px; -} - -table.table-bordered.dataTable th, -table.table-bordered.dataTable td { - border-left-width: 0; -} - -table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, -table.table-bordered.dataTable td:last-child, -table.table-bordered.dataTable td:last-child { - border-right-width: 0; -} - -table.table-bordered.dataTable tbody th, -table.table-bordered.dataTable tbody td { - border-bottom-width: 0; -} - -div.dataTables_scrollHead table.table-bordered { - border-bottom-width: 0; -} - -div.table-responsive > div.dataTables_wrapper > div.row { - margin: 0; -} - -div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { - padding-left: 0; -} - -div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { - padding-right: 0; -} - -table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:after, -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - position: relative; - display: inline-block; - bottom: 0px; - right: -7px; - font-family: 'FontAwesome'; - opacity: 0.8; -} -table.dataTable thead .disabled-sorting.sorting:after, -table.dataTable thead .disabled-sorting.sorting_asc:after, -table.dataTable thead .disabled-sorting.sorting_desc:after, -table.dataTable thead .disabled-sorting.sorting_asc_disabled:after, -table.dataTable thead .disabled-sorting.sorting_desc_disabled:after { - display: none; -} -table.dataTable thead .sorting:after { - opacity: 0.4; - content: "\f0dc"; -} -table.dataTable thead .sorting_asc:after { - content: "\f0de"; - top: 3px; -} -table.dataTable thead .sorting_desc:after { - content: "\f0dd"; - top: -3px; -} -table.dataTable .table-hover > tbody > tr:hover { - background-color: #e8e7df; -} -table.dataTable .table > thead > tr > th, -table.dataTable .table > tbody > tr > th, -table.dataTable .table > tfoot > tr > th, -table.dataTable .table > thead > tr > td, -table.dataTable .table > tbody > tr > td, -table.dataTable .table > tfoot > tr > td { - padding: 8px !important; - outline: 0; -} -table.dataTable .btn.btn-icon { - margin: 0 3px; - padding: 5px 8px; -} - -.dataTables_paginate a { - outline: 0; -} - -table.dataTable.dtr-inline.collapsed > tbody > tr > td.child, -table.dataTable.dtr-inline.collapsed > tbody > tr > th.child, -table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty { - cursor: default !important; -} -table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before { - display: none !important; -} -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child, -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child { - position: relative; - padding-left: 30px; - cursor: pointer; -} -table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { - top: 50%; - margin-top: -9px; - left: 4px; - height: 18px; - width: 18px; - display: block; - position: absolute; - color: #518607; - border: 0px solid white; - border-radius: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - text-align: center; - font-family: 'Courier New', Courier, monospace; - line-height: 18px; - content: '+'; - background-color: #FFF; -} -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, -table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { - content: '-'; - color: #ED362C; -} -table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before { - display: none; -} - -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child, -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child { - padding-left: 27px; -} -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before, -table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before { - top: 5px; - left: 4px; - height: 14px; - width: 14px; - border-radius: 14px; - line-height: 14px; - text-indent: 3px; -} - -table.dataTable.dtr-column > tbody > tr > td.control, -table.dataTable.dtr-column > tbody > tr > th.control { - position: relative; - cursor: pointer; -} -table.dataTable.dtr-column > tbody > tr > td.control:before, -table.dataTable.dtr-column > tbody > tr > th.control:before { - top: 50%; - left: 50%; - height: 16px; - width: 16px; - margin-top: -10px; - margin-left: -10px; - display: block; - position: absolute; - color: white; - border: 2px solid white; - border-radius: 14px; - box-shadow: 0 0 3px #444; - box-sizing: content-box; - text-align: center; - font-family: 'Courier New', Courier, monospace; - line-height: 14px; - content: '+'; - background-color: #31b131; -} -table.dataTable.dtr-column > tbody > tr.parent td.control:before, -table.dataTable.dtr-column > tbody > tr.parent th.control:before { - content: '-'; - background-color: #d33333; -} - -table.dataTable > tbody > tr.child { - padding: 0.5em 1em; -} -table.dataTable > tbody > tr.child:hover { - background: transparent !important; -} -table.dataTable > tbody > tr.child ul { - display: inline-block; - list-style-type: none; - margin: 0; - padding: 0; -} -table.dataTable > tbody > tr.child ul li { - border-bottom: 1px solid #efefef; - padding: 0.5em 0; -} -table.dataTable > tbody > tr.child ul li:first-child { - padding-top: 0; -} -table.dataTable > tbody > tr.child ul li:last-child { - border-bottom: none; -} -table.dataTable > tbody > tr.child span.dtr-title { - display: inline-block; - min-width: 75px; - font-weight: bold; -} - -div.dtr-modal { - position: fixed; - box-sizing: border-box; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 100; - padding: 10em 1em; -} -div.dtr-modal div.dtr-modal-display { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - width: 50%; - height: 50%; - overflow: auto; - margin: auto; - z-index: 102; - overflow: auto; - background-color: #f5f5f7; - border: 1px solid black; - border-radius: 0.5em; - box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); -} -div.dtr-modal div.dtr-modal-content { - position: relative; - padding: 1em; -} -div.dtr-modal div.dtr-modal-close { - position: absolute; - top: 6px; - right: 6px; - width: 22px; - height: 22px; - border: 1px solid #eaeaea; - background-color: #f9f9f9; - text-align: center; - border-radius: 3px; - cursor: pointer; - z-index: 12; -} -div.dtr-modal div.dtr-modal-close:hover { - background-color: #eaeaea; -} -div.dtr-modal div.dtr-modal-background { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 101; - background: rgba(0, 0, 0, 0.6); -} - -@media screen and (max-width: 767px) { - div.dtr-modal div.dtr-modal-display { - width: 95%; - } -} -/*! - * FullCalendar v3.1.0 Stylesheet - * Docs & License: http://fullcalendar.io/ - * (c) 2016 Adam Shaw - */ -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { - /* extra precedence to overcome jqui */ - font-size: 1em; -} - -/* Colors ---------------------------------------------------------------------------------------------------*/ -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-divider, -.fc-unthemed .fc-row, -.fc-unthemed .fc-popover { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #FFFFFF; -} - -.fc-unthemed .fc-divider, -.fc-unthemed .fc-popover .fc-header { - background: #E3E3E3; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - color: #666666; -} - -.fc-unthemed .fc-today { - background: #F5F5F5; -} - -.fc-highlight { - /* when user is selecting cells */ - background: #bce8f1; - opacity: .3; - filter: alpha(opacity=30); - /* for IE */ -} - -.fc-bgevent { - /* default look for background events */ - background: #8fdf82; - opacity: .3; - filter: alpha(opacity=30); - /* for IE */ -} - -.fc-nonbusiness { - /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #d7d7d7; -} - -/* Icons (inline elements with styled text that mock arrow icons) ---------------------------------------------------------------------------------------------------*/ -.fc-icon { - display: inline-block; - width: 1em; - height: 1em; - line-height: 1em; - font-size: 1em; - text-align: center; - overflow: hidden; - font-family: "Courier New", Courier, monospace; - /* don't allow browser text-selection */ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -/* -Acceptable font-family overrides for individual icons: - "Arial", sans-serif - "Times New Roman", serif - -NOTE: use percentage font sizes or else old IE chokes -*/ -.fc-icon:after { - position: relative; - margin: 0 -1em; - /* ensures character will be centered, regardless of width */ -} - -.fc-icon-left-single-arrow:after { - content: "\02039"; - font-weight: bold; - font-size: 200%; - top: -7%; - left: 3%; -} - -.fc-icon-right-single-arrow:after { - content: "\0203A"; - font-weight: bold; - font-size: 200%; - top: -7%; - left: -3%; -} - -.fc-icon-left-double-arrow:after { - content: "\000AB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-right-double-arrow:after { - content: "\000BB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-left-triangle:after { - content: "\25C4"; - font-size: 125%; - top: 3%; - left: -2%; -} - -.fc-icon-right-triangle:after { - content: "\25BA"; - font-size: 125%; - top: 3%; - left: 2%; -} - -.fc-icon-down-triangle:after { - content: "\25BC"; - font-size: 125%; - top: 2%; -} - -.fc-icon-x:after { - content: "\000D7"; - font-size: 200%; - top: 6%; -} - -/* Buttons (styled - -
- -
Creative Tim
-
-
-
- - - - -
- - - -
-
-
-
-

Vue Light Bootstrap Dashboard

-

v2.1.0

-

- We are constantly doing updates for you. -

- View Documentation -
-
-
- - diff --git a/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/documentation/tutorial-components.html:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/intelij.webpack.js b/vue-light-bootstrap-dashboard-master/intelij.webpack.js deleted file mode 100644 index 2f49f38..0000000 --- a/vue-light-bootstrap-dashboard-master/intelij.webpack.js +++ /dev/null @@ -1,12 +0,0 @@ -// This configuration file is not used anywhere in the code, it's a hack to handle InteliJ relative path imports -// Keep in sync with actual webpack aliases - -const path = require('path'); - -module.exports = { - resolve: { - alias: { - '@': path.resolve(__dirname, 'src') - } - } -}; diff --git a/vue-light-bootstrap-dashboard-master/package.json b/vue-light-bootstrap-dashboard-master/package.json deleted file mode 100644 index 1144c7f..0000000 --- a/vue-light-bootstrap-dashboard-master/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "vue-light-bootstrap-dashboard", - "version": "2.1.0", - "private": true, - "description": "Vue light bootstrap dashboard", - "author": "cristijora ", - "scripts": { - "serve": "vue-cli-service serve --port 8080", - "build": "vue-cli-service build --watch", - "e2e": "node test/e2e/runner.js", - "lint": "vue-cli-service lint", - "dev": "vue-cli-service serve --open", - "lint-fix": "vue-cli-service lint --fix" - }, - "dependencies": { - "bootstrap": "4.6.0", - "cache-loader": "^4.1.0", - "chartist": "0.11.0", - "google-maps": "3.2.1", - "register-service-worker": "1.7.2", - "v-tooltip": "2.0.0-rc.33", - "vue": "2.7.14", - "vue-router": "3.0.2", - "vue2-google-maps": "0.10.7" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "3.12.1", - "@vue/cli-plugin-eslint": "3.12.1", - "@vue/cli-plugin-pwa": "3.12.1", - "@vue/cli-service": "3.12.1", - "sass": "1.56.2", - "sass-loader": "10.1.1", - "vue-template-compiler": "2.7.14" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not ie <= 11" - ] -} diff --git a/vue-light-bootstrap-dashboard-master/public/.gitkeep b/vue-light-bootstrap-dashboard-master/public/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/.gitkeep:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG deleted file mode 100644 index ece0e3082b40bf6c5c7803c823fc4e8501107f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224552 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 z 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

&K?BaRioRM2Ul-V35H>C4=co zIfI#+^E-7}mmG}&%H(Uaa3zIPUTH9EWRK24=jcWaMpgfE z@Yz>*HiiKde|}!7x>3=`F&Z_^M#5pmDs5k$0dD+QqGXzyBW`co1X^jT)|9Vlq-D2K*e?d1xhVqf`;#_eCVNJ8MLMJBC9 zZa+n%e_M=kQ46}|YuiDeMNTjo=AAOE^R zNZ@UsAK`eeeJs3?_Bn^WdD|?3U8KV>TI1NmKbfA_H7@LL8WCMK{t+%>o6N zb*V2%8&R>+X|y+yt%$&_QG4cv91tb$4*_3ilZ zfTX{n+m5O>+->jWXWEMKx;Ias9=$#HcclCu{R&F>bc+iFf>-*C&|-bDk}DqPBM>HB zmk_~7vld;{YCM-9eEO16suMK$E%i&0)1+zmveGKSar3*)H+Y3drv*7cC?dpTFocX; zC#Cj9I&Hpfqzi*Z^0|k6TWRkPS%CPg4Bdu_Y-BSofQ1GmfOZ`YUM%o|(U=TirhO1f zb0oZRqi2=KH8UpAuv?HyY<<3bct{q5hw+KYM26VJ7pa+$4erpWz;Zh{5_8a|bjYE(%RLUN~E zJg<4!CG^Wczv`R|5E;bDZmgh0W_=-=Uyu^bZd}02a^f{yRG7tS(H<~&m}JY~^K(p! za(X7FYAh@io1=#2la5H-LE>1xuKW9-XBTqBfIhkaIZ5Kz_FCc$>BZhnsNInS!Fxsa z*^Q92+c_@H^`I|Zs9cU*NYg7<&fLxKGNHXKMb13D_1Mb*)cElt<=KoZd@}T_@af

*?EPk9lm`;XXd9~ zaIAjOWXqT++!j8H)Gtn)2#Tmw>rePaU4GqV$7JjK`E?Ya zQ26lEa&lcFg?({6H658CjBrHlgiN#1ie)ASuk*)SN@gF`AZ^e-);fbUQdp|6!vZ#$|3s%P@?xZ1_K-N1x3~BnKgytM!yw zTKBfey^nHJzQmo_pg`nL_MJv)H>Gr&>8>Gfc($h2;$f6&)sn!)%>+)MJKd5e?3nl7 zmJRk8XM3qQ&aP4`!^`y1!cD_KuF5c}1$SRdU7u%{gyA8}h6!6$Fo7ZH7f``n||U8_XLb`PWqSwpRo6k(j#;av4MfL8S7@ZREes6uMQsd3@<~VjixS$JSr%Eq}AH270sI zV7Yb=@j6EHgPEDxML)0Lit{IDnue`hd0wmr8f|OgKLg3|C`zbJXD~AE$AhUakp8w= z-zEivX%`1>nx2!=eLd3u%qExP#ky*$`P5Q_P zT@LRHS5)q;6pGnu;oM-*tk8Wkp0ZJHvwypVts=CJVEarEyt5d!;Iq4kzWM>IWR@_it}|tE->hi{|d`Xr8)>q+W*8w>O{qaRaF|_;X3L zbsO2IR`Tar^!o0@Wy`?a4usX>g-3J2QBg+|<^wQ7fyREjQ9gS+f~&~6>m3kah3E*^ zkFW2u-El8ot^|Dp?H=bOO`McjdS6dtzj7qfE~ ZLgvRUj{Gpa175q3%P($@6np=;{{!!q3-15` diff --git a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg deleted file mode 100644 index ca9fa88471a83781acf0c00784d5b4bad2ca487b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2864 zcmW-j2UL^E7RNsVNa(R3EDs{E;vy)kf(p{hO4(f=^5CI7P!!!&Tv3qfDgp^z2@rZq zA=E&qp(H_qpaDce&U0gv&KxlE3GC={^K0?*Bfdpn@U|u&5K@?D0DU-N}QX`)LrgH2^{A zEeMK=g`i!q@x&bn+ILhLdBhEZq#^g;Jb(H0X|bpnmtRm+SX44SJ(HJTI5sxEwzl@_ z)xh)T-5Hr#TU%Qdl~r8sI}T@Pcng&CS%> zT1rbxYfUYsth}<8Qb(z)r+`u4(A3miS65$G-_Y3D)X>maN-8fUm6hNKRaNBb>YCyb zd__f7O-(Jaw5*`8xUH?7SV|(5RpjOsRDzR{Yw!djgTWvWOUuhE@r2Tb#wJh+)M{*M z!r_THJfWFNrP1iEt!?$7dQ)>-TU&NcUQTX)3s`Dz@95~r&dtxt$)nL|*zDY_?A-Qt zS_uwMqk~`+6cuB$z}~`~yn@WE90sE!6PuHP%}&qAO3%R7)YiQl8JV1%tgCD2c-F~e zc76Exv8jnVH#axGupkzTOG@zHzI}^{iHVJkjf;yzp-^ZvIzB!=At50#F)=AADLFYg zB_$;_HTB7pCr_U~O-oC|U@+zyKlx9zfymR|iM|nSX=^_hNQ+bv*}O>F)07>3Q)2DEyMeV)gd+ z_VxAk_xHa7P8t|^{rWZV1Dnkr0-gX)8V2IOc?)a-jP(w18W{yHdH?{B%5D4by0mTKOQ1}TrcyUoA5-lw)0jkT(%PT7@ zpFe+IU0nq>USD6ANF*B@8(+SB+1%U&X5QZ3-r3pN-QE5A^()|imifzG2$HLIakTS{ zZ>g;1cShYneyY;rmD| zR)yt|qtlYfbpLSAY+%t=sK3{-q&v8`Nvgr>kx$6!$Qyph@r^1)f?Kxp$QhL9P zR`8nA{$Zju#&>M5lAirvSyu!je%i7qJ9W(-1umC!;e>`#0!Js^PZo96G)cCR>~E$O zu4m^@S4ecw)pAyBA>V^5!p6M}dJ=s!5X%(%JyWb0GXh;3VW|uA{f2jTZtB%6^tx-}ODGdcb-AGb1hdzaQC%zwUgQWyTV-#oUlvO%Iq#<#)s4Igu!V<$T+

*?EPk9lm`;XXd9~ zaIAjOWXqT++!j8H)Gtn)2#Tmw>rePaU4GqV$7JjK`E?Ya zQ26lEa&lcFg?({6H658CjBrHlgiN#1ie)ASuk*)SN@gF`AZ^e-);fbUQdp|6!vZ#$|3s%P@?xZ1_K-N1x3~BnKgytM!yw zTKBfey^nHJzQmo_pg`nL_MJv)H>Gr&>8>Gfc($h2;$f6&)sn!)%>+)MJKd5e?3nl7 zmJRk8XM3qQ&aP4`!^`y1!cD_KuF5c}1$SRdU7u%{gyA8}h6!6$Fo7ZH7f``n||U8_XLb`PWqSwpRo6k(j#;av4MfL8S7@ZREes6uMQsd3@<~VjixS$JSr%Eq}AH270sI zV7Yb=@j6EHgPEDxML)0Lit{IDnue`hd0wmr8f|OgKLg3|C`zbJXD~AE$AhUakp8w= z-zEivX%`1>nx2!=eLd3u%qExP#ky*$`P5Q_P zT@LRHS5)q;6pGnu;oM-*tk8Wkp0ZJHvwypVts=CJVEarEyt5d!;Iq4kzWM>IWR@_it}|tE->hi{|d`Xr8)>q+W*8w>O{qaRaF|_;X3L zbsO2IR`Tar^!o0@Wy`?a4usX>g-3J2QBg+|<^wQ7fyREjQ9gS+f~&~6>m3kah3E*^ zkFW2u-El8ot^|Dp?H=bOO`McjdS6dtzj7qfE~ ZLgvRUj{Gpa175q3%P($@6np=;{{!!q3-15` diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-0.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg deleted file mode 100644 index bc74feaa2d8f82d6b8db260505e095ccff316a78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20568 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-1.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg deleted file mode 100644 index 4a6637cecd292b4e2e87f8edbe39047bb552f4b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20663 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 I!1K}n14=WW!~g&Q diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-2.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-3.jpg deleted file mode 100644 index 81a238a8120e2e6dd390b419e9d6eedd6f97ab3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20603 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 WoO@Hwo9FP@v-V+HaTCwc=>GxF@sV%< diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-4.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-5.jpg deleted file mode 100644 index f5bb5812b1f1f191b5f35415ee784e1f206cf2ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/face-6.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg b/vue-light-bootstrap-dashboard-master/public/img/faces/face-7.jpg deleted file mode 100644 index cba36659e9bfedd92c82166e8ba18f18d7c2248a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21603 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%0A{;VZxwk|GoX{! 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 IK)=WT2OfuG6951J diff --git a/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/faces/tim_vector.jpe:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico deleted file mode 100644 index 7482a653daf1130d6dea4ba9a92259a8cf15c87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmeH_F-`(e6h+^6Y={&PBZU=}F`+kc5tPKZ13H6^p@Xmhw<9GbE<<}0s3=f47yeED zB<=v-${Wq#=&@RX63=ee@lalIfsEBhb5 zC_QWKxW)+k?i;+XjI@1s?YN#1<@0}YeuZvETAp{6)sE{9@dLMR-X2&UQwsn9 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/favicon.ico:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.png b/vue-light-bootstrap-dashboard-master/public/img/favicon.png deleted file mode 100644 index 7d8b7d072215eadc900d6e9e74e51971ea9895e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2761 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/favicon.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png b/vue-light-bootstrap-dashboard-master/public/img/icons/android-chrome-192x192.png deleted file mode 100644 index b02aa64d97167ad649e496908b35f14c603d9249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9416 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 ROru=^AazZ3N)e9H{|11FNXq~K diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-120x120.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-152x152.png deleted file mode 100644 index f24d454a2ecb8851bb893192b64ee09386d30e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4046 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 cK^5JQ0?3d{m_4Kdj*!1;003@kYpI!lw*K!+ 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�MrHbYR_buu=L>f*wO=Er8~{qfkYT+HoHag8)VqJoC-#@ zNT})4xRE%sP-B9?xmL5!2Y8VLa?yj@Y@r1C)6o~9GF9nWG!SI2VJ$>ejtUE%Qv&r_ zYLgZ0h3iIrw7{TyurC(g^$XT%PP5`FB3aFpP&fM-8!J#3I_ujG?;7(Xv5ni%BjYP4 z^+oydy=)_&bdxYJx`X%G5PFkUB%3h6RiOs^F?#ojsB%DbfhqzGhuv4)S1%vw@PDyE z3xWF{Y^0>+=Wg! z{>z@$rD6ej*V- z^$zKIOWOfdN4~7@ndhru01+3cxwD&_Muyja({*O;-5VnF(e$WDALNStE{1{F#ts+VR{o zSlQ*@U=Du8fgKW$lU~)O)b6FS?H1SSnKVIC=DOvbo8IUvM zVf+U4YxG%qLGd%ew7Jp8>@U`ew+A#Q=2oJHNH@_f!WadS20$KZEZ+BHAvU@FB zzRCYN5r+Z#g`C^hrH$yW7ABstwjvMM*CHGzY41bbo2zy$6E8DAOPn zUnHG?e7?u7pQ}Kqbu1jEd+=mcGea4aL6V4g(m*b7x}z|ijsjb3e|tf-3&^JK{=sWz z8sqIu9jy)#J}n}cXqtXmkb-NDVPcAKn=G9uX42zYvufu_OCr>xJ=oTNp8WA5wEqvM z{r~m8;7_C>U68iRr@|rd7UYhON#(-S_+Uf>s)hhPU{{exlxc&eD diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-180x180.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon-60x60.png deleted file mode 100644 index cf10a5602e653bb126332934e2b7f34081c19a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 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

aZW9cb|x>1jZDoAu$NpeWiVk@{x{! zmmBmDgx|qNN?LyIrl9$qmj{KjZ8zpa=4edK3FuFS$KFl}bWPoO*Ax#Z1c2#3JAN(O zYhi>`%H9fSnLkAq|5vs>+?U*bdfMc6TmDu+QqnN9xgfZsG25($^;v7U1nBl9Q^o*i z)&?UaYZ=~7XZa75xPKB1s~MB1m<*dN08pqiy*q!)_Kc|;EZs3&nNdMQ5#LFu+J z?*($vO)$hkMOVc16f-ep;K@_~&Y6t?0t9I0(lBkZBfic|u)3pK$Xv=A@jUQnB2sC` zbI)L9m;VNkWOao}2c3b4_u4+bg zuf-@d1$?asdD1~mORQ02#!&1Xm#41*xz}wETNqKb;kueQ*~OpcAXTpJFYUYcKoA&Z z8Ke=2Vh~cu_uTb&6AH75L!k8zo~&wRsDLs^3YkD2!~;%u6sFrzV2A5(FQ|3}+0-K- zWX)W2yq%?^)iKhyMGPB5*DnWBaLqAHLJ47;r5nvkeq3u_?J{Xaf_}6I+xpLwKS7NC z|KYU%zup)8i85jc)^Yt*I0W8;+zHUI3V7@o;3DUYasdq>DFK%im4J)F?;|B-<=}8R z>HESGa5)KyCnGII|E+YX&h4Y+xCRvyX@oGhhG4 j58+{W$RJv~NLLKlV4)8v^7hU(R-4l(}$teLl` diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/apple-touch-icon.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png deleted file mode 100644 index 42af00963d81b8e39a30435c60ac482d1f8756e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>WRE8{w#)hawXn|-Xp4{E;v!=;4B^%-x&;Cm1 zP>^*#n_J!T^1SBMI!C4h-R53dN8`?ylD}d{L%(vZvUKT)~-CgWFQy3lt zIqW5#zOL*K8HL%o&D;R|TePl5?VWhq^wrj^qed%lKKkpp-FogeyEi+p zE?K8rW7E1fuEJ{5jaaAp0~aIt+keS?T)@vXM=*X}V#VGMCm1~v-+0wr{w3CJ-R8wG zS@XVpzqP-5Mf0H?y-zh=XVL>S6E;rKnDmrMQlmoKbK9p$evXN`oe{6g>lvi)-+#c) zb+Al&$zRqtWk1@VTt6MPmq9d7^!kmXZn8k{sFt`!l%ynwlArU1(iRB6fMfqu& zIjIUIl?AB^nFS@u3=9=>9)IHDC=AokIOTu(jOWuJ24-b$y<~1-Wnu5hBFw@HE)6D! wQ<#-EhbWxBaplC3Ge=~Ou%B-5Sm33{@Jd{;RG<|Mp00i_>zopr0DGh}-~a#s diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-16x16.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png b/vue-light-bootstrap-dashboard-master/public/img/icons/favicon-32x32.png deleted file mode 100644 index 46ca04dee251a4fa85a2891a145fbe20cc619d96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 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 - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - diff --git a/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/icons/safari-pinned-tab.svg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg deleted file mode 100644 index 4020b4d..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - diff --git a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/loading-bubbles.svg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/mask.png b/vue-light-bootstrap-dashboard-master/public/img/mask.png deleted file mode 100644 index 429360d5ce730f002b7413fdb94bcd261339b5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIv!NkD8cyyD`Js^j(z$3Dlfq`2Xgc%uT&5-~K zDkOUZ`7$u%&R}3D?qgv1b%ueV3kcwML zKmLP({*A-*E2LeiU=QJ1RAk@^Je8B|IkoT7jCe!ITtr_Iw7T7H-mN|a>_~Iq6)cxmOxaCz}U%#Ui=s2K3N3I^^Y%vgEy)dEq$tzzSg&VCE z-hNH8D(cxBVu|TZ(-bt7gnr7EDXw`FXuQACea6q3EX)??i)Ss{wNCy>i$Lu4wXeJG zt5is|ZI6GmcmLtk$Y+utw&ikeyY?(*od6RG}N|3)b--Fx0`gf zzb;_}x%SBnuxnk_#RT?9>t``*iRooAcc!mZnAfW+aiSt1qKtFX^3=I|_~e*B|L0l2 zpZ(T=$M^C9X3f)^UR!0a4SyS4G4HvFZzGFS$8JvPnb8pYyQ0%A4xY&>OYj9^0NMc%^60)#}<5!Gm85<1XFVdQ&MBb@031k3nE(I) diff --git a/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/mask.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png deleted file mode 100644 index 8e2192bdde5cb354dd4db5f1b7d55de774c3a062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3557 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/new_logo.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-1.jpg deleted file mode 100644 index a7ad3d7b29dfee049a5ba7c00ac136129b686a74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225399 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

Uepg$-RLUmFFnDlS767gy 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

-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ξ%m!ph!01`=(F^zA51JRWn2nUfDeZ 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

-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�ya|L?U%C9=c+X>x!j@}(DSs3!zd;|&H0>*pb z(S<}yRuQi@&xZ#*csFkx8`Kc_34Fvo)htPC#*p}{8o*a9gKe+<1l8zQk64+# zid(kgs_}O3^_ArFZx~6Qg*h2q;igE7{Hhw2ja6>&QzXELXZ+drtqYT`Ilzh?og{?VeI~|P!v-h^wSho`v{OYOx!-6p?8m_l~?1vX%i~N zv(I$VLQ@S6n)z|>6#an3+(M7}d^8l(M<-)YBZ8=(V(y}rLl>+rV#Q^Z`|9@9_7~Q? z_Y$q+kF23-Y`*Z4H0G!w`EK$(bfAG6D@2T&tnCMjaEdbY9#ohRY-&rBA5`D>+f zI*@qm`tcSxmOMg;MEU;#GFea(EVIS^-HdOZJDSb8x{S*AnbK&rV*`dx+DuRRh>+sS zjj1oc}TuJ3im;u&?|obg<0Z;q&tJ@I3jukHfz+`qw)U3N%DNRTvQ2t<|SWA{*X8M(v_qoi8q2?mAftnZ5HwKWPIH!mr<^nS6Dy4Pkpl z!-Hg4+C=!LhoM2Z~ zFE9c?T5JzxaUA+$VJ|>jR#t-t7$h2dH*!VhXVX+-xS>32*hxeVqQ( zGLEYMdz`6NQkwi)&K};Px`8KAwvFoBKXGCvxygzyib@TO(vOO-$G18Y3+=lSOj zSu&?zQEp_a<$FNeD3=bdU2ictlz#xVtf==in5$HThNm|TOKbF^CwtQ0XoG3JB$y)~ zDPFR*-&e%Cd5d>tID1pB`BZ?-gHY*ThYG<1j>2Y1ZNrnaga3RP4|&_Omnd;X?ow1Q zN`poI<6)8?hJP`CD6FX@2W$m@0bkGZ0+5M1Aex@A785hixA$%AaUq?XDOWj$_;y17 zuhLgmUw*iVez3Vsi58EVV<=X_R%m&Zr1xMOgKH*(2PrmYoBmdkr`a!3`5zAYA5HPf zP#{1rh|;x&Qr;fJOp?Zf9M40K*cvOVW$wKneGy<H*LtBpvub&3F z9XblSBo9;Ao*@3(w?u-s*{JuPn;O8QlV4?eWn;Hom4#_`&A$9q^qF;fL{bD~gV+<_a0Pf{mQH<+i zLo+6KJ|`Uzp+$jncC;U*w~+(Q&vAd^KuQFsCacT;oinVjrd*Fi<*)g-A5Q*q2wxHG zc_3%;rAediiHaAEGf28jmY;}1FzrG569BFlEZpFS->0DXS z@5UlbeV*}bSE*Em5I>Ow>Pp0Sm9ayh_GAA(Z+uWs@fxKfdWe)%5Uumt%~+*anVVgS zbV#?tSDGhwifP~;{fFwVO$#E7Ad8WM?a5FqBevBU(AW{|;!v^7rV@yrrT1Z+Naory zk$ut!D)&s%EB66?y~g>tZ^0-GogkNuah8@^Ruj)&c<#7~C&g*)MO>Bhi zIHgha36zwjUwX0788Fg2OG5m_Q~S4E7>9+xV2h;u;U}qdANns`*#vRGW?7A0XHcg+ zgL*3691Tego?4SwFtoeSlpM-Xg!#7j+TX3$zl;5yYL`6XqK~cGS1f=jjzwY#S5a?! z#$5Svl0QoVy*ykQ$#xM(4MsxG5l67WF*bq+SC1w`1o;~SqQlEKC@lPNjl*7%-=Q-5 zp<1SguMmS8{R5cD%;suyU%FAC7|kd7*0nQaa+$!Oqtzo?061bphgVD3PkQ$}@-cWsJUZfS%-(nR{H!WrwP1r^Tg1-O1^HY11rg5)Oq2MddTaz=mj8~jCs12@PA{mQDJm|_v|9IVjrmz@0B z=jIs?-0hs`f-hWbtySh*2_c7G)}1W~OvKN-fA=Rezu7dopz!cjQ7wyM3iTb};|;6NY0xIrf^^^490r@&d=)xVVF5`7YG6n<&k!eS4K&UyUw6`w(Ey+*|hH zzD!L)y|{UmN&BeBO8bTdd1e0qek)3NnqsFqoP0Tcyiogx90BoD>c&_#uZ}qTv6nmy z>E(|P91e8HmIt5E2i9@riejEP&z3m*Fns=w7_J`Ac-!FIE!a~;$Qp;pkx_}SJ3j1N zN^0NJu8Cy!Bl7p*pza$fY=|@r-^*_`ah3u#xG|dg>S}3&(1;{QfjRz@g7Of8wCZuG z#;IFaP-nBYIZ8&Uj{$LP^blG@$c5h6;nzO#Lb;tIXk=nzZILj$ZsM zEmcwQs2{GFJz`Bw6-eMba7R?ul>#AOtnk5NwLCTaP4%3H712u4qz25B?8JRkG$w$P znWuu|*1ACWI;TnxcRW%vuBX&gX-FLW9o)u>;Q%H*e$=0rS#BNlz*aOB@^8_SK|-fortJB47_Lv+I-I2*clQm$w_0Qf--WZb8a252DEw`PbXagN7b;bt+m~mgzj;ykZ48%w>ufGCGBnKDa(R`k6WKl#1|UkLeP#!FV~GszytOdkGlZGojrMgMy5CetN4X$@p`B^QxdOh z_S(XRqAUH{T`GTQLl$TJc#_`dx$Yr?N{L~xA1Mx#_CSx;eXPe1EQGtrYb2~mW+#ax z=6(3D3?645tPm(`z+!}CJa80b0LEDZk5Du?_Ggv_1#+f5jt+SCV?3#lz!>5UIp9=O z40)0&Z~(<=jui37zm7O&4hPZW^m$|1!|3p)J-G7l{=?f|TSs*Sf{zTU8Av`y5?yxH z$Mjp%QZ1Nkw`1($xC45!ki-oV?kc~FG?~Cad$sn7E77H zA9S4{{{VTxTX>Alcm)(6SuM|A8BA6BDopD7RF+jER^1$)siVis8L(3JRr#yJqhCRHwV5t=}7#?^Zuj%&v9604)r1<{;V!j_iuRISSj}BR5jeLHFhT#VW8hba_hIe#n4MIZ&Sf zIN_+0OQ)4It^uONyeUmh?8^bJXA#HDIn4V2&k@IKY}W>ZNu?J*W_Vpo9lS$^jy3Z< zajHoS@67?O8DW4$7Xu+2K*2KH8JdQXgIs9&VWOW6M!#-9tai=v-6DPl?X^z2E^Q{K zt{aG3H6w?C<%^B;wO}SMRF~UA3Y6wrA& zm)D8|#}%jd;II^?L}P_8|}Hsdj=a+Z9NWDs8L_jfYi{m zsUy?={2gsq`-{ix#Ui!PtCqL@bi)RhNBp$rPqPD5THE&W6u{EDYBDsS!D*bg0uelY zxL~Rj_%W%*gQ`rZ2QR2#hG7sHr~;=xSnB%xHFKx43*Wz%Td>&sw%JF`LUXj-qg>24 zag3NAM~LKcF2%UQJ74n~Yft`bw5}eE+Hx~mF{f5Cd@~&JF7w;arM~bg*ETCfj^~*x z$zSvwOK))-Tgwv_nkNJ@u*iZA3Xxn?aON>eXI!v((*Wtm4`w(}_+pgzpDYC;oQn)( zwWkbI#}p%$UhE12eVF)Zfx|3NV0q*F@y7!%r}h0AaQbPF91OmWIP&tvezAk&ihXz= zuN?f&J(#aQ9Ct6wqPez(XSOGZl^kg!&j1tATGX%=Z}(s+b14+1eMY!ujTSJ~sc)@;tGrSEPW^ zO=wL#uxKeA4yhZ`F+(|&^H{Ub+mFM7l{IH`T(AzYS{2jf^|&jZf`(_UB{LBOw$c*v8URlqgR?F%rkVw^iHO$k`!vQTpaw}HM3fDXZ zYk~+h&@u#ja0G=&T*-5m0;ok$G9Z!;6<*<_r^K-eQ^!0a!wRS%dfU{;-f&Y{DaT7> zKD-2qFaXHt;q~Hy^X8S|&lJnToct?X2e#BSA6tyT@D;)=^3_MFoRUGODg*uaYhBSJ zmDCe&cm*YmzR5$xP~yX|e>qLg@%eo2E&F@D-m=|TC1|U0#ifW2XVku97F&&t{1>p@ zz$V!Hj?I=-F}SMwmnTEaa>Uj*@cNfH*k+O^Cylv-f;5yq2ZmS-7PaGnm_AspocwS= z;4lR^n&4$XF~>UQF~g5MQAZva8i>p5z@lm+nZU2rjx_xz9L_joIOC2p8Q>9-!1_3S z2RdT3$Lh-hygq~UpA1*^;+W<#!C*q5_@rV2k9o@yTz3a?+dj z%S%^|2|wd|7LZg;J&;_6Oijsd!rqeIMO#|Ar93d!)3#QRP( zI|U<&8S(SOw9ipOLIcO&h3m+w(&mUWBirGHhR}m>$I<|=*W-n0PQ4&h@u}toFs3m= z25L_nO>(X1QVS;&pBiBVXmqzAbFMV>*f^yXxDb2}G`a<0$3F}eh7%)`U0kVvbT3r@ z0GCc&Fd<2UB9O*9`YJh5a<9J%E%lll*suybKvk#dI7D&-lT)bWpM^0l-Mv`HJa-G} zc>th3Dq55{Www@1>inp^oVD+5I}%{jbCS`xMB|wFTb_C1-+S%-!8dKHcyV^Weeaav=6VamBv86Y0h zo+x>E3{=;Z1~~;7pc;-S7Jzc63}yhub^TZ*l4-{SO8fD`l)6ZwLXUaGn}20l zPu)9+s;k?nc=dng5D;hKs|=CdN7@@?hJj=CP8Y*d3J>8?guU*4-tT?AbE;Rlk(#H% ztVzQ>R%p){{0J6;z7;r?1-y2ou>c&#oI%8`Dx))d1Jn#oE z)q$6@83W~yQ3E_@nZ*WPbig&?iVv?I&kSeF70c)+!x?eMhBH3QPy)<(4Dlq}zU^(d z#}FmNjtc-hK;iGECbZfv8@e|oBqTOtt?C>rpoAXx_hM^)*xHk|Hn}|_>S{EaPdZUh z8hIQp;op7Bd%xTq$~>&mgW#)@f$SI%ZT2x*#y^=Y0cQ5M90iDc#P#9<(mcipd8kop zfjHNWcv&15r9(AqL+m)vj6o)cEV%gK3h5_^<~(VN8-W`s_{pmg>=1SAfS-NQwdQsN>{L5CsxS?LZD*?6DlPv}i}doC5o} zoG5vjB8xJ$rEB`I1W(h2KnYRH$YEi!R(2m7oa%hfEOqY~O)83MucUhh3dI6hTTlZ$ zhJvGzUMB$j)Vg?ea;-me!vW{KX{N|DPe|hpn+Ssnlv!fB~D*zpQ{NJmcrmj z0-&C`2!eM;n`8id#~7o@|~6mpo}AwEJE-pj^ia;8fAL z<%$*~*@_X7Z;eKy)@n68bPBiV#MaR6gMGh@dTlL#6^nQjjGBKF3`uF& zow#;u7p*Sm&V$E7QGdkEkDKql?7h8N8&g=u#6~&LAfkWa!i#;jHk4=AajlQM)|go0 zimY?+p!309I`wi~!1wdRb=gB2Xoj`HD!>{YAb)l$7OKL8Hy=Jc@U>oyMui=-C)_YV z{Ars#37c2l!x6;{D{3aKSe;M8x!|?w7ZR_+82Iz13&MpV`zQelY3GRKxm{USg1+pq zG|>@76n}Uappk@coSr^>YlW5KjucT*B$>CjK6obHGbyf9H>C%d!HzI)+>#4)J@%+{wJE~{(f zs+nr`f4>pNCx+Cw#?=Y|uMU&|v9IkmDRKCu5bUboE-HDEQs?U!6Qq4L4mzDBp(-<{ zQL1_P;qEP#ZAH3rF;ym|9MJOvcIt5UVpgGad$%T>bdbZDkdT#%nWaX&jN~ zkQh~(;zo$ms`ALHE95`jjZw%gw-|tX9nKKiqmX7l6Vt%wmke3{S^j>@CEm`gEp`vg zhWt>8@T^;d3WiE$)H#p0QJx2Kc6f^B3z)^kmKMw%9yc0<)}=`dq-Ugiv6$zdA~BK0 zTBpYuV}(5MH5!4#84Bl@JXW+7#(DFuG8}m0Jh58v!2KBVz{@`zdwg-@%9x?S9C6`+ zJ>~k1nX#t)=T_pS}JkLB8o@3K`0SrSx9spAgj6Hw${gFNfU zEF{;OjBw_wz*oc10aTO-G^iObmKrEyWOI`^0KGZTu*==8AJB8$c8tJluYR*S0{{Vg#D`>i z`i*D@fEYz+%Oci-DK%zznvA{m#7xo25pP^gGX+-gp*~&%6Kwmntam}snjqBivB(h3 zn5UL4_I>6F`>*n1S-?n^LnZFltmh@MW0HfJi26_2AmZD;zb`jiO~~#k)Q(Gb3k}nK zq;<%}I`AsMXU2yT+uTCXPYV>D839&S96<+x!1dCchB$x^JQ@;wh5@Ar;!pcAQ9_04fLgw~TO2xWdDT+TL3kHz;f?=obj^>+V+pb9sXJ+OBL&=yEA@{ZxeZo<> zTzpbZDK0C!@7}Cc}aZ=Tw zq2o_H1JrktzN40YKwz!S#+9WRS+n}M;a!305%4JW0tQ5!F;Zhh$yEh^#C-A5u(j#b z)2UjD`JeaU9`bg%W1GiboJf2L;(fyj2~~+y>URSnXDe%o?ZaqUHuw|raIFq_~8P%MRhemDqB3MUS4=!ysHola|2UTpF9ZGp;S;4 zlQE~33PT+n8U<0PpK!v>y4>`TwPUhIEjxP=cwu8m2Hg;@R1a{#d-SKj1udZrPDBT* zQ^n*o`mj3pNgA5zw}@x{BSL+{20JK4j1p$|GL0p@iakf)fcHS$H9Zr|bjF?}AjXKH z7gr8FGijw4_DLCgh7n_q7-R!F4y4D-@o%hwfsxiuy&C@j7f9zy)7@N5M3Y_HIqDrc z3WC`KsfhxZjbz;7w+yGcTHR&VbES1q5Dr*goQ>9G0aa8- zT=)$&C)tfuB!Vl|Bx>^bOL6vKC}N20+L8q%5IO3la>0%UVCp~;P%#FawDb4k87|S< zM5d{3rWFUkB69uXir84JHttASmN0?HOd}?rQw@AKj+Tlve8!w@O;wV5Ex$i&9 zkuKxgSJH;=j>Ngvws$DGmO|9iARh~$By*_C1AOh9(YAMP+ZxBZ?KeOr<*bzcRor}C zE0Rj0pQv1I+l8xI-9eK?Lh0xqF(<#wf*E5>zDd$TJYN_7jJ&{J+?4dxG>a5Z!1Y3E(|) ztqA?t{rHu)9qGGP##-sNwJapkd39Q>GW)u4+m88tCh2%vRMXu#XJT`yEJ;6J5SEQO4=1hoh-tY<60jNEGt~zMwG~)KNBAx90mkEbE#p&3W70FS~%lg zW6KnZ*_{Zkw#)SM!l?;v;p%Bz)ZporjW`qp8hNq7SnW${6fH`#Hxa1uKVAzv2&0cC zP-&k7LB|S_5a`@wCm;uxjw{p>JXBciq&ienDv&GuqL2oH+CNODz9oTbpCO38ZAH6CNiT9KD<~E8i2-6yh+Gzi(fWp(Z|__p0&~fy zHTMO1O^=Gc4FZTv<{ zW3D@;ty&q9x>;OgRfP^MyASg=2){4CHSC8%8wunP!*?Y!dkLh->N%KP)P0>?aPmZ- z)ofIfE^WasqxRzXhq|K_BBf0T@FT>19C+}?dpi{*K{D1vVk!5Ipo8Ann$NUs=kDFXeKEXCt}sVFqiK)o4}%Wc2Wo9BNROm7NUD4t zz*YVf7&rabzg+hY=JaU{(!1&MEaac73Y%WkkUD^|xIt6mYn}s4=?McczNX8M4tT1- zByKG|!N^yI6k%0nG9R+hic>u32lwOg#UexK4)twE49OCDfD0c1QJ*T;0IX3)3HTO= zh~iHi0V6cB6GD-J$IP54msBhEDOafXVN91I1X3$65^6KUDyvS)-j}XszxMFLh(L@m zpsrr}49*dzAtibWk|^FjkZbkhL~E?2MzyYyPapg69#;Ur*ib45iT3+&NXV(JO&N!V zSW_gc8?7j{r$bJ$R8{ReK1k9ymD2VyoCiYu{_T!07}IYR;TwyL*8)I zvxRF$X>QocMR_c1h!TBQvdNMHL`aL}8sp`jZmW#`LdA6z@*#YA)ZrwS*x6Yq_+Cmo z)KCHw^;a68w{0YiO(i3U4nPK=1M4`9-dsZNt5Xa>lk8DKee}Y|AzNsoG#2ZsNnH8I z5vi~3Fc^6HQCQod&PlZE@}w#0UwuwBC>I1|mv=le`>RjXFjf?j?PSPT(5vhmP9htO zge?gc@sX&X4I-!O!YbROaS}B~Gj>0u*WHe<^n0I@;mfP-3C5oMODKPuY=YcOfeC8V z=_)8kzYikF;uU6T(GHxsa2&jczX$-4>eWM9s3d$$%)+$x;5fN09*`uF0V>30~BG!zrB!m+{6=I@~uK?a#JoDR{o{pq z4S0d{wDLVu_)%yw^T$ph91!Xy$QoBq3YH;OzT=LQp|szi0ioStQVOulYLMv$htCo1 zmseK*0GmCJWV&tk{lVn8ytjpN(-q==I)FF_4x65-HD!A}Y(Q2U8L- z41`Un)RsPZ9V4H&03#I$Xs6OOSC^2>1UQXbR%%AFeWc-3$V%3%003u}RpU$(5iuY& zk1Wr%vi$=T5)A4PgH|Wc#{?4L)qxED@3JT`T5@HPPZk9a#Koy z?c;+s;kXDjDA8=S48-NDs-tYw3k$UW_fus){u*1D+k~)5btj?gAmEUS}^nIF2`!DW$$ySdZdw z{{XuP1;SVc_|_B!+y37C0+5*`_*Bj)!kp9`{q(?+;{7a5Gm*h04ncy&3hOc)! zh?6c!sMPu8kCofu*5PVofEG%4mdJf)0k>V%Q5b$Ly`crk@YPCZ$1@TiLss0tgxjo=N)KnT|(BCcv2_sc?W@*ZvSZN+LS)C{m*IRhz0V)abc?t5u z#U-kAB158@Kqk4C(h@ZTkX0wo8t+{L5V~U;ivj!2bIb05gDthA-CR48l7tGYP9CWP zP0tt7^cA+Lof7u|;WZMr*ys*NP0&Xu48h8fdclC?}lWoS?j8q`9 zTHNO%h1Ls+RRI0wZ|=gAHT0=UuxaITLC93OrWNi3&c>gHGY7`6g!wIwC6#^&83Uiv zGQo+_V@P-*Y60XF4=e!`EKrf@%~qeZYAf~OB8im{nm5aeC_Xg*0B#F_5Vm@o*CTn? zfFA4?nZa^H4Q8Z+&VvCh+CNGZF|N#C$Q+wK0PE8Dk-uoU^a$#+ajb2jZ2+kjKKUpVTp3 z#`sy=ih>~nRR`@hWc#rkmbOyexv6W*h6tg4@n$t6*@7m%b86)Dt*np*JS$lmh&{M( zO|%jz1E{3kTs1sh%@_Da1hK#xH3pL2GX?hP00YAy1|p6*ro0NLsT4$8+y4NMGHKv5 z#+a9;$Kyy4mn8Bmb04D`BDjvhfvv$hOqA!X&Z08JtRkCqbRaykoly@0Druj$-H73y z@WTvs1{+|pN6+oh48LSo5-fI=2BBF%F2nYua$oe~N3oAe8ip!q>F4SsSL?>P<}x53 zh`?%8@-iAA{dfxt861GDV^Z}#Za^QP;0q#QCcQ+6876aFhN@-m82Q=yTU<;kw^yuQ zW9(iz`>-R~dwTb~ZnYoAburl`PGy+UGV>=9+;>jt4%&bXJ6_%dg%|GYqNw)+gqq7{ zihI=IxL$wMP5dS57x+NNe(#_sQc{-c0P0Y(*M^7?X%+Y5RnuHRvi|@sCLyI@J|c)K zKx@kqJa(Th#k`_8e01*I{Z`x<89vp@l zVzw5J%u6u%+Pp@hEA?Qsg{6`5qg2R!mCl~*D#BJA=|ZgS<&dBr^MfVz<3gZSx{d(S zDPKz0^qdt1r9yw2K~x@oKKw1cstZ_9P-y_WQ-RBlG`~>JMFm?ro*Xj5nd)Ok((G7~ z!ytKA3k(tUwS%P;fkEO);ameG0u<9#Kx@yDG~?oMZQ_XDOG>aJp?$5ueOL=T=o-Js zkJLdwvbFsrVzI+lCXaI|QWboE?OZfS%xgerlC(U?UoUPH5ve34iS&w|8DOtjR8vu6 zc-MeXGr&)nRn%#$)?XS$nKLx4!vF--ENB1?(P01w1NQ1T8m2)?Br(lCO` zB(<|rbzGCHhZ24m*WS!7`kxPAa2AJ&a;$}Wdv9AwnX&zWc-FIK~#hQO2)-sIruM-*yaQnv* zU2aJ~a^J^IHyexVh!OW-T1GwK;bDd}f*A5hVo->qz$l;?rvZwATxY~^`VtT*SXbq? z`WdTFPNr})fJSD6%M%G~`qDVmbVy{G$>1JSQ%@2;yatlv`eU;moJ}5`RN^YlsM9VS za5c{@(Qg{)q0Et9UeSSWmT|HcqazRvM>0(mVcO$zh$4^z#HFj9G=~(`?yd@1L2wE+ zRNT0RI+2|R6H0T$v0LsdB-2#Q9jywft!UCX3tu2GjV-`w87Lg3#DPM;DpZ?BFh5X&o%OmL^GQQ`?8k@aDZO>GHU=#~Ef5M^E@ z)K|=mD(P$4V+Gxl`FUh&;Z$L*(%?ppMu;u6fWA7L{`><1%PkZGG=!4AS^43nxORCe zHO7LiPDGMvo)IEeQUL3gI)KkU9CGkDGs7-U0_kBhR8REQCc0pU_}0D0iX zu|~$f8FI|t$m0y=z6O|YpPnlSph_d%X$FUYNEaf1c;Y6GA$GBfweI5DVPE{Xsim{> z_us~B%0g`YfDI%Q9OrH#Rt}K&8B8mU2h1H<#iwP9)VZf z20FG@?L0~GIuNm^k5b}KNcU>OeBIQSEhql~m$1~45Pr$HaL*^1Rj0ECI959dKtF?P z{K+@~7?RQv`^-I<4Hb+%IOx(#I9JSY%OxK2aU8@mK=})qJurdBiqAzp#Z!SZkn(CL zsT#8eG^eBwQT+o1T3NhkO&VEh6F&&hf1&s$c`Gre4+`QtyFHFebYWlW+rw!lzi2F~TiK>Reg)3|0Dm^|a@5xZMWBFFku@?f z{vbTCw%cWmzTX0hbf7?=T?S{{jz2-mBZ_jSSk?j2z{ogP+l#%<-+qQYvcmdpzH6-ntv8`WM_ zRUhrgqSfY&g=AWYl}jEh%~DD8&kGr>Kmt|>2c%S*Ya=$xJ|h6z#nqNN4y5g+61+)j zfIhrDm-lIR(>kPv5vDr$GY|zFE9D#9GKGJFBg$4|%N}Sg&Bn$+& zl%ixLMKuaMGQo{iQfOAJ#0=?5d{h9}#|mfv0IES%2ndck`MUvM;Zuf}s?8hKgGQwz z2BM4io8LoT8I4O3k51*%0nfW)U#A%Sb1V?+KSjv*=vi3w0c^Ezl2zF1b0?nY%Kk3tSK$X7G& z7}W)w*Sd{bMyzoXMJj4VXfSP|y;y?^wY7|Dg}DU|c+<#YFT*iTr%{qnttny57X*$x zmjsC0uP_Df<_#--Y(WQ|Dx=E)!DlAm(a?O%t`Y@dkUbO{So>>;TXNjS-dGZ;ZUAz} zn69@T;ex3Y-zbmxrd8G_VO+|F{{ZT7?83&jeOq{(X;UarrkPSSP>cF-Vn*pPZ6eCn ztmQ}E05cl?(ZEDSfs}&KAvY6y^m-Tgo85sCj^66|zs{afa`BPiDbiozQb&#!YnkJY zGNlq%YLKIqN&OWVFBUK@JZppH&j-r`E*vnZ zideCts05NuKmaiuw>Imt+BSV_(@6+C#4A?%>4e<7n)PoMH$;1z`2-fB+|gG+AR3+k zlYpCjjlA0|;i5K=ZP8i`h%q`T9!8#H8>eypP=~zPR^m(T`?78Uj2Rf7y!MhXsyQoH zsG;J+J$QT0h0pqlC0j$={S))T;gy(1VB=p+LsvyTTB)7_+FPUx8kJ2&4uCk7i9IXt zIFuM>zL=VI-GanC$@Gk?=VNgxkx&T6nB!XIN2ue@fO~MlNsRHteQ~WB0Rxc~ zKz_V_3#GI&W>6?6#-zB+`GJCw1w~OoaWiUV)tB4ISIA+-%&Jyna?2e! zY}`oTp)N@@uNrb0bHIAZ9%LlZ4I@0fMqYLIV971iQMmOTH=oCx$#gbQ|o<#rv2O5w``mwI&OL!xVs}x1G$)6nxfSjx1G1dH1;07+lM5eqeTCvZW zIEqBH2xb5VRH&f)THn%0@~#QEk~sn}t4QRi9txwnV8k6JOYe5C^9;bdRE0(jzd!p1KRZRI8KbV`*yRX0X}hTq2sO!vyo0z41BT)fYz3742*T(T(K>ef|Ec`nK&(L zZ6(4gic0Ks3XTDqfotS38M@UsMCEFuOk*#!h)cG7*}%k?D*`q^2-%k274jhoE%lr< zO?HvQ=7d6e5Pp&gr|gR3@;eeunQ~(un0C@p|1`mcQL+!`+;ahIn zWm{&a{dLFS!aVgiA8=NX$jKw^*BWHn>%0~-f(eqUVA*X^Ck9nNmomQoV= zU=3J0pcbLkr~_Y8uMts+wyVaIY2Pe}j{g8_y#gzUB;iREoW({=wNuF82_lN(14Hv0<=(cjs#Q+a>0@4 zj>5V8WR3-SpK!u5!KxvYZcdi3Gva;Y8t$%@T2N6ID(1tHYLi-V&jI0vJ5s<^nQKBg z@ywcG(ixhrJtj5vH;=0zGw>Klpn%64pG1YL^;CY5hmPXoO*DpB!KFC@N7s!gwUvQz z9ZgMnf^)=7@<$3V3XJ16E#NaJ>cp|EomrBrsX+-+G8Hu^-If_9aTFRzSmUH|gTMl7 zQhb5HSmQ_oR<&Iq_+)c6_IvT5$<)xOB&F`t3&Db@W8lsSl~HG z(XeSMPIY#wuj#~q?tK`^%_Gg2@dmA#r@ILx8kvCq0Nva*XvCAs@&gEBu|xujjT~hW0M934&d1LJIAvQh4JsoBLQjDun-m&nccFKj5?X^U zf8T~ltjRJ^9-T;K10YKR1$ptr$t94vagzpd(~XBVYG|qOsPY)4xU`n#%Jml3H7+~= zl0l?CJM<PUC0W{(Uxz&&V0K1PBh|h6!-~n>)(^3y51J-`E9$1wX zqKYapbfL*q=T%(Kw6VZ>?iMIW{77w3R-6Y?W+hbq%GRDE2`i^kBqvkcF=7GFC8>PR z3Y;fa+4=<;t<0py8dI2wb2afb!oj!0HSE(6u-ia`r{FXJQcZpSSWBJ3A=oY4gYy@K zy1{9XM4@0k%k9K>ThY1hi{&1pcI=Q>$EK#O{7i6`du^N>eWXAHwYH67K~Duh1_eek z;e(9$^T4*+tS8(j;8FxHPYpz5J?9U&HHtpd1)!_#Jj%h4aV@`*7E7pxEWNuiVmg%pKY5GLAK2SOHvYB zcqqLxR4`J5hD372f0zr~_UYUUX!epgT16mf7DSQb9+JpIX(VN-sY;reUU1C0x`F`u zm(!oO4EE7VVE_{}%n*6zXfpB#2B2O#f&*r-s`INzR9D!zNZo`|Hc?u@YFrcH#-4S< z2aBK>pT%Yf#eIcKQ2Emcw$KS91OnPLiu0vOC&P|1QD<#ZdQqszD99EZ{h4AZ9ol)N z70`g1=S#3VOvpHb|k;u$4l15We`--NYU2v#?!6C{`0Zflfm2)PZ z>`e`NQWHlCL&!sBHA-j(UNpk|#j%=HG>)%QY0aC;xJT5j3g)))*Gka+r5-e{e_jN! zx`=)f>e(;s2Q&t!lHtBy8E0jttBKD|0UUDp&xSx?2T?Y(1EB~JE1n{)n^1Y-O|nN~ zsw*K?qUW7SKNk!myzhBEDxD?Ok>l}XFlV@EEXx4NB&10$ni|n)C{7eXV?OIWN8)HM zz=Kgt^pCF^FCmV`FaU^0qIs#xtp0?qTm~hsr@Jf*OK`$jEBiX=i=QA40;)>uDbggN zXHoZ1k^uK9z`nRqX#$>_++VR*a(?2|TYn0iEK%-k00NI3Rn~c`#=76xQ|%a4n(W#_ z3F^r)(I|b^N6HdpO9R9iwJS!}1doGirNv1^whuV1o(x7+-V}Tw0<-Xl$^&f^v zFV2F1F$bAoJdPuaZAtC~K9vz8Xs6yKncMW!5kASVOJi)zN!)Kqw}z&GusLeW?vsda zJD+rY(&aO2TVbLq_!eME_Rt?ZboPy^-ok@PmNW)Z2aJZSe!Nz-JWdZRWtC228JuWE zF4Xu`5`LkLr?g<)Ev>h$;wy`bJ89m8!D<6fE|3W-nv@gbK<9*;ca~lDk~UST)F^l`$Q(hl_jb~E1cVUVy?_rC$_J!~-bHwr^HwECCL3uX~@lx0pb3w^Q}nAlZ!y^jLxa0F@eJbJ^oF>{mDTvfB;P z&PNgfDik`2VofWN8H1R{%lUozn`XAww(-Na_V;!~DYtGBLaP)*QOX&Ls0CQjkHTx| z9b0!xt7+DfMrc6?im*74Y|+}-&odU9;%M4JO(+SYDQ*B}*$jN=$v^cSUoHJQhyMU~ ztEZy0_%&y%hMe)PG(;;_SssOrdDcn{smi!%rfp9aMyF8*o+N+vj6~@hvXVirr9d*N zEnZ{82ohNB(pJ%?F+kMKwKCK7<6O`eoe4St*H+>a)Mzr#g>Z;%l_rd8kp&&wiO)00 z(~k^FBr-ETpG;sZTsV-t>xPY(LZH!AMr0l|9Py+;;bt`&)CM%BY->m- zkwTN02R1(HU^ItHJJuDIejqrFIk~UD1Y5@=faH{55KwRdMyh+r_F`69 zN8LA<&;nod=ap4GHWt`)vw0WEasA0r{OA${RVNs;{tDp-kc4#G#1LEop zDf>hpJUT}jT0l@bI(74Y3Eva;U*gHs5GqY=!_HNG_?fzB9VtT#2JkO#SKzZ zmjc9fY2*Sf3fVoj-)c~6j^VXc^2u$YC7bxzj31ioPa3IVETJRPInpsm;{(mGv9;6A zk*HAxxM|p)6s&2d>m&EDE3vAyYebG^jT8X120~ndYs(i8aUCvEwJiRfDAlC}Dyx~{ zMg8nF8x@}AyQM;xU0pHlkdUgPoGNi0&vtI+Q(M)B}9^53GcGV!XejA0s=)q4A?eTvIIF9GL_urUu3kwTc z#En8K0nSIvf$0MV!(-cF+I3}bD@Lf-Ih8tOVqJ|#0&9yN;q80ayKD0*!DNeV+#`gv zQj3LFcrH{8At&jI)PTiCVSpj~EAuCBJ+s|5<&rdVO}*GbQudNJ$ChOetPd5V7`Hpk z+8cX2fmj|!>6h|Q-ljfE3By_TS8UCHC29Re_&vNM&!z)R-^3#ywTZ3!+qp|w+^^#7 zHp|npZ1n|}2%L3RqcxUU0r1Adxp$t|Z$IU<*4I%<+>yj)h7HA@KbDf@pXEiPs0$VJ zzLL~mRwBCFu49=U6@W$zG?7qLjEEzF7;D$IN4j*48deoFh_ON|z>P;dNw!_x3tN=8 zOQF>oQKEKa)Ek8qtr(gCQR9oPkGQtTH*Ko*3e9UehFTFyuYvOzj{g8>n)khbE2Wf1 zkP>FyHlS)mU=mHtKm$ei!1#51A-6=|EiLU~iDaJTrbUlFUZw?FxoIMx^1y^axPMI0 zOK-m|FF-X#C@It`MSXoe1Mg-rBQ)&Nl3L|~Dsw#BiLZ_T5D5}S1#>N2^7S1x$kP$4 zriMbyB2EWL3K*93qt+Vm+!oxQ+Y6zIQFsbpXA-(Qg%$D#Px)qGvx)_F#zr z0Mtn-S{sqMDRcG0Mkk;0^YaSfZ$(}mr?{e4fw|}x7NJVl#Kv&D2Y>ec=F@vFqiZHo zTV1N~Yio$=j=nluSB)^pw%;QVppPyH|&7MzTfKKdLNn)(g41r$`b1)OjcF5{1~m_O5@Tbu0l z-b}ibvGZ@QD&Wg`b{G zWr`4#SCQ&i(Bugrexh(CNM*P&Q%qV|fIzCYk~8+`_8dG?O1AC@F+m#j=6B&m6?zlT z;ljIH0Ion$zsCatME4i6m%1asMw;12?-dyQX-(Ct=2muCVXvHVH5#LrQ2Q~a2n1HY z<;H+p!IvM1Ca>^U&jd?y`k#uz!Zo4&rwmSB3xV>o&cG;Ba7&R?jIud_j-ZfR zEf`2)TFAhh&r!{DI1LR%4_w-n^<`5brB9HjzY(3@?g^<^=msrX8q+`olkEz8@b=xe zwMjJ6H=-D!X#w--#ZylwdSP!ngQd14r(1m686_MkOK6xzwB#6^MR$2*cgyHN5leTR zNPlJ!bc`$(@TI&FHn&P#TvNd5As75d8@hg6_XO74#I}+pw6mhL(8x!oNc4&|If_(qTAZ;LZC=AC zZg)=0ZyYZzkcDtu_w1Tr@ea>SPmkipU# z?k_GFJB>9u-Q3YmWRp>bhqi4lJHK!>jT>)OHq{5=Hc=rs2B(A&U?9AZaBXOqy+sG^#+6i^Iy&vZr&`QEnMd;2IP^oZ@Q5J?i6635a- zL23h)Ft+;~mit_huqwR}Vk!Zu=~_~znSo!fxLZBOD|?$eRx!5dT&%M$lFKff$2C$9 zFvh$qJ&xgR4&%38p;@iu0poRH{{U(ciF=>&r6=xg!B=Uwf6LP+{Y`=sSCedZAW(5J zH=y#+b1`4-+kzKXFx^Jr#UwMQ#|-f}4HSxas{n95ei&zqL#Sst=y69-RD-355y11q z?R#Xh_crNjp$^ltMlO0Z^nomj%LE`({K;3@i+!HWEH*8ZYPc8ITWm9%iRGe66hi8H zBypfFUqnjevX5N>uk{_`Sg-dP2x%JH6oeD!F$Pxl)L__uN45Dv!Hjw{)Bypt{93a) z*0>PD(oSL^qQ^v4)CsK$)X;h24Kc>IGQN=sEhLRz0YLQ@_7jLM?fXtmhijUIZk@$T z2zqrS6@Z4F^8Jkbac_0`k=<9l*>M_;TTa*x-(m>Pg~4f@dkW!gdoQ%M&fY~(rh8Zy z<{qDZcGW9;+ZmdZ%;SzSILy}*lQd;PsdPyJL855__N01G-Ap$vcIq14&uO(Ot8%WG^7Pz5%zkSHn;dgS`XK4$(|ofMj@6oN73LqpGrHO8H~ z$~8&@6wT;RwWwm!09)HnVZy%ee=hALfEBWZjB)B7Kx%KV--zS3Mcd&5k=sKayO{|T zr=+uc1{vMNBH_lQVtVXPgh{SaeX23jB1CBEt>p^xGae;jO=W$ihY;Nxo`l7^V7IE~ zfMuZ&$iv>_7auRCQdnxex>uFd0hkF9EC=tnTsXhnE_WskSArK1K%>BwVs*FmaCBkjoEpbwQjn3b+>;wXu$(p~udhAowU?Oc4s^2Hk{p;D~W zJOC`@DB<==_FhcyC%p zDk6~vq0>VdXGb1}(xh@=GQ<{VcesXV^a(dFN=YzWm@rU2G0iAJ%p7*5yc>6WOaQL{`S9sfZOUWVzJ;d9}jIl>R(mlDDLab^k zLlIsJ%L#SfyVcim%A`8l$l%+fe#BZZIPGp7rGB6wi42cGloeeok;{cJF1w$8w%ZlRSRi&SG|YG`Fd%uQ zCy+!Z8_#)mM#a4LPVKqhPaTt4LD9Iou#NP?CH;(u$)-%*R%H@K4;85xwS&I%6-sy581a z<+6*_xY)gax-Ii5dEx3rf z*NywvQ)`sh_pwrHPmj=Z#~g9PNi?e(C?%bU0DI0PvDw=1y0772lUeMR?|NfqGy+K@ z1~~Kk>@jqke9}XGx5?4nc8j>$-tyL8xik_0>Q4}9LNf%6ai}9P$b-n@`@26Xp5L>3 z(n8Z-Z3+Z?cH-wVry?z-WA>D3C*ohVi{9GqZJz%CXYPAf(|Kchuhu`bri^4m#aT|1 z$+7cO%LRmz3UywOaY5jOkSpP+;ax5MYV42=-P?&+n(;(orBCjyaMImOjnOoXPNiKW zkVRc2+&-#^BQZv#aMa|IK=UKnhBx;x?RM@oiyIovaG+;GA=0%!v`!Ok zv6#XT6C=4(aY|H{NNG}%nNxw<_V<5I#4mT4KOz_d_lP?zl%_mH>kXr_klzrA}oU`Ii65!ZFX9Z~YcQT2b zit!2p#!rzr>O^k$SBQFq#hNww(ls#AYgt2sFjIT5Qtp z`#iRqnkz_&on}c0dPvM89)hGRQ&k#`T#Rxkb=IMkSQTIhtq3`T;tnjoGP^5!PQ~xp zuHxIw@ThxD$hyfY+uhp&t1{9yIzbG%v}H|dyLWN+J>S>~N zL&lF5vBOElC%sC9kF#5E+mndfblkz3<8hKP zBK2Bnt{tb8h|81)O(m#3HN~9$tv$cVNV;Q4lt$W@CRtE`%PO3mTxti74LI_{N4pWY z+1|*a&ic|4i)_RJ(wZP$w3EV3L~?CBOUEKCk;tWFjesi3av+0|2g4U%nBS6DNwN1c zkuLe#vKIcEyQ+Peqg=z&C6PZ7e{Fpjmu&w4Om3h4(qp)e%=SGLT=gAXiABl$BWdW) z`_}SJ6J*+Ad+VZn;(#$8(?N;%Ex)wS zYVC0f^>2{wJEN)R9^GivANrE5IFW_C?n@i3@))Njle=zYx3ifQ*?$Xc+st4B0AME9 zk>kr3-O2f>-@WPif!nrMUpun)HRj}Y&fVH03>j5ywutQ&#Ap1*rb4a2oLJuW-STW( z=WjrkTMu>Ytgi4y5`i7GhNUhb0+o%)9tB%GTXxsxRis;8{mb;We&)8X^sUVD5xZv$ zr<_t6{nFz+0;~ukpp5bTE4%jJ`pa}-v-cgPBit-qzSJ{N)oaBXs(Fkx&gX1u!vy0ybI9vZZ2u3UAnIE}8ZV0aX*EMtk= zrax^Ek}~_uFk|_Jl~*-spYWG13lweBH1KIoBUTq%nNm8DMno`GRN0rrXWIED_^u$OV0Nj(T*4_f3204!kniVr+3-*j$Cuq3V|m1LA&-I2|7 zp%EvQS*hWKo$Q}`zmG9}xxZb3{gfag`KuwwE2r+MVkqlWrIA29|q6WgEv6LlsS9(&eOueR`_tuBCBlyX>2U7xp)?i7n@b zMRavM)q$b^0JU%)>0%-<#d?YufWnPHL8V4V5?k%fFL7=N+FH|YRho_9^A=bmK20Tj zu{O;#5cYp=U&#wzD0eqgMGUDhjLuaGD>4AWII32vBo(eD-*#&i?pWYtXOhf4QA~;@ z{4ASN##xjD>L4f}oLJxXh1IRb)pZzaX)UNVsL1LWFmQ5ZZ%{cft}b@F(;~rgKbsR2 zkr;d~tSOj0xE=aouLVj7VXyZiBmk5Wh`QC3B@!8MtIJu2_cd&UmivE~64# z+{D4sL}5@t6$B7){{Wbuly|Gz-SY|$p0HKbW4gqdh%TT7L$BST4xD3Qnza4B-c}O! zw|Z?U{{YDL{lf=$RXR-ea#2OhB;~0_rTAo3Y_Sx3mhOjexQt0{vcRu#eIO#EMWg~r zPq#=Oc$xcax1#NBp?*F0d{(=h4;9<(93r0%wZJ|pjqdY&?#_a>YuiZ{;?DXdn%ZR*StF2C5Dy{`JY09@7j-ox-FtpY zjk|RT_GOJo()7t)eM`!t&}Z%5&ORk0Vj|ZIOz5dY}{{mPgS)Wz!jS{!+CVIP&LVqTZB25)es{q5{oA0HXNU zfW(koZF9hi$EAPi5XhhdT@J!kH6&1{E;Pr>-CIX{7-fEhh$LM~Y6(&Z$oS*s?Cs*P zw${=JBNSC5sL%8iX(caolGLa5ojEb=0q#TGjgU1(pX6I)H<+k6% z&|g?w#q#7cr;s&Ba)7o$)kViVk;iR~cblagM)c|b)kC6yJ zXyW2)+vsj(ff_iHLa7{7rBz{os-W?wQx9clbqd26^g{w^O!6a4bg#CH=ZLN2+wLwF z;Dtqzme$@%ohzj@>woY*BJGaiwB0+ma36m?aP4qTGI-(E!dd!eptV&=;4x*n zcFn9%>=%%%w!J8pBC2=^6+p~*oPMkv`0~XDSoU$kMHFo;vKmJcDQ08f0I5FgHQakQ z$|jvr#d#vZB%ivDYyK)?Yxakach;)gInJi*A*h#V>wxdIF+ad2g5){k=`rlaGY zXZ7QG{;_bES9^>zN_JB3aXrB+s7DR5>y?3VRie>Yk_zHI*2a6D)wtb~8@>MkWsTBn zQ*u>WO>z7JRc}j45nXhvYQuL0_WuAq{>GPg7BJYr${~_VISeyZ6bQ&!6_eDjm^tBw z&9>Xy+{Y6OS!D%|s(L|u*e!U4rUkD3wF9KR#1L@+rJaed$a0Fx4kFC;yFa+!w{P^N<*cM+Bv43YY7&wmDC0Fev7(xTf+!BD@aYW2C}A*!2=SEz*O<31XjCzQ#k<4L~9go!i5o7f^ zH4DJ$$w8-risG^`j2-~-KEN}_Z`y6M^?T!OlH%gye%d5ey4unuK!$mv)FXKrw5mOI zfWefg#Mbb40@>JIGV0$yrmPn%swwDuiDiLLiAWpB3|{ws)v+G;-YtQj*b;+WIf-I;Kf z&ysI@^Bun4pLt>-r*ZrOzBp#@Zt=UnLTcMC&JNvX0sAcK%{!0d9?VN0Z|pXES(nu; z@WeW?* z+b^#1bd$I4M17ms7M`QPN}jRLQ1s#ZZ@Mfb?XK##O;T-F3<^$w(9LNuqRkocT*n3q za=_0LU);nyZ@wXmO^0_`#x+P(dLz7u6%(hlhF(p`or}G;hO>s@m~ETnL_Xbp7(Wy< zFjUn}D#KFq7zPEkkQepL%F-wtO(k$6{{RSF@X@{72^1E61jy~=SgVjLT2v8;jg^#T z%hoHamogQ~l~br@dFXNBrwt9{;n3$bk^vZIIqDz{Us@k-5ZYS8lDiI&kMX25;_OM# zr_8eD_HlJ_Z!BW|%FgO&`c53IkwEN>#Q+tr3X{VYo8)#=rMxowZ&?YBO()bt@FX5M z?E7-yB1!Kvyd1;fr10XO(BQzlJ-Q0&r;LP|C^e2Zt;YPA#@=rZt;z zxmS3hXH)?r8l-Yq

IbllLa-*H6W)Y<~_h-5 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 R>aVv0`Bdp28d9Sl|JkTq>5l*a diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-5.jpg deleted file mode 100644 index bba1085265f59cea7bee7754850d282760a1ecd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77287 zcmeFZc|4Tw_b`6XFpMSZP%4al-v)`4v1MnhSyExfZfJ}|Z$ipevP-rh`&QOMB}rK- zyAp~bTdTB*JlBl$UOwOF`F>x|@Av!b_rAIB`&{Qb=UnHU`&|3Q#?y^yrZWALUhWWN zW(G+^5QKzSVGu+IAQ(3mJYbtJ>m2~YX)rY}55};Ghu{Fu^$P}!FrHs9pn~m$5L7wf zE`sg)4OhV=|H7+8l>mu?y8(uw!6*Pfjq!r$!JEqa2E0UpUeq7vwFn53;MjU=~fRHPIH5NaAq81M`7G*px{l=naoeG&vQ0@?J6 z7>p9-myH`65JZ7*l?!X9&~3qVy8tcqVt~>8(w*V2_Q6Ph+6N2$t9@|TmJC=F{I_hR zz@|9J5WJ~2(%u_SH{L?5G@Fjqy8bQ|MPG{lNTBAJk^OiZktEX*vN zJnXEj>^wWTxp}y`cW|=Ou3xXs#6O>~Z7eL?*tT)7v2mc-*w|3i2ODaWh4X(RVB-$N ziG(PSBOOc_f^)*?IAI%;z(|ITdoV4aB?3mffWp*^4nz$-f`Jjq#LNQwXC@4S(`{vP zKrnh39h@GHU}Qid=vb9OCMO-e5SJ1{+tP(w_;@6S0hL@(t0N-HW7Y1etU`(!&}9@$ zvHmdq(JfGwx3KPvxL&FaUjObD@}BL3wl4|G_0b(eL9ad?lt?Q&+mL>5cxI)zv2$eh zvz_~ia~UN~_eWoUQ8PH?5ge0Qdi}wZxv!iM91gUlr|HDVfKa8WAf&`a4>UL~%#FZA zCZnhtv|9~)P!@HaCPk&_TJyLCs(chq%k z;~B(CM=O&P(t>8D_Y51FHSYJ`U#=r69-WrRb#|{Ym+@X>)U>3w;k2Z6bbrbv9b73> zftc1t|LdlbX9`ih+8F3~mhD|zyXT%Ca!<*#iwniIGA2j8{VLjB<6P~Ec3Jxw$Xd!C?2qyGE9;C) z;IiT`Z@S`V;>~<|W3X}|@OAc^nGcQTd><_L#WE}!yMJ6$ z?0z1{>}BS-vTEh?HvH%R;CgAmlH-k2t>!-e2Z~MogF&ox&L>BIvm+{k2yP>jxWjTH zj(+iD#cD;FTsMwx3@s>*CFEN?Qjpgwmi7L_N2`_Vmf_6q5brZH$SvH zD%?&~dBl1B$|xyvEM~V+)A|Mp|v` zV;hja?@HSO1^@Yd<%)XM5Br;~xA!@F`hT9d|MtjWj-vg#}Qu~o#aKuUw%`^Fd+_dQDQCKaSdhtha`1MxLOMWM~PN#Ic z1@8|yRlW_K;w+eBvHp3VfNqgeP2?*CJ&3X zv!lC24YCZMzUmg=JL0#GQhPH2`3<%Kh2hpOYHKLH`f>CPHN-Aj-YI!*lou{z_5AF~ zuhvdYiGAqQpTrU4wcQnGa#j;`Ln6r0RnnJd?`3HgAJE>DCnTqN8bz%jBgW2$&Z>})zZ0J&o}zI@pb>4VtwE-?7JOD8-KnJ6kOSUVCWb+hWCcIruI+c>ql*R zN~TZg?*7ui5W@sTUVC~!YP7NM;v?*{yz1P2MUAbytSKHC>AV5i zG}DbP3;GCr%V@62-xC9C{b6o!^{QZf^HtB!=gyNowLku}wmx~tX(Z?VxeOJCYs;fQ zPA|H^dzZo!<+a9xzgD$`o(+z5E55UBDuC4_b@fx3^6O0I>bBdFRoowsOZ^TeDET3^`N>(C+m!H!IJoAt7-j`)?LiYb516^zsAbPYDJa)U}yYV^-_KJ&#%bm z75=t6ZQC|RKS{xjl1^P35P3IqnukxRASxsJU}U!x3HDaGeOj;Hh~bZdy_eFa?$=5@ zxM5^m_(L*$^&uDX$H4fooV&7*i}0P7CT%GOg7G!)1Cr2v((+!uobA&H4Yx9t!7i;L zkqOQA4XCYr*ODQSUtCMBWc+N>HUZt zn%;nNWlXz#EAkY?{A*~|KQ{O~OH^w&Ja#s8~(ovRIg!bwfnbA{6 zNf5MsH_Q>D+a+f3`wd1_@Ib;QjTnuFV~^mZaH@=}#B1vbxZp?JOB%lhH4lvPAc%ts zP*V^~011qqEP}`ZL1d5wLmddx^(9#oh(Uf^F!gO^prcED8xhHbtvo7B!})ojsc*9Y z9bZ>}e_yI(cA8vkuai`A9WOE!Po>!`k3cea@gvyi+uH!trXrgRIFi4=yETCv6ky@% z?FKSgAsj@4{K1bqgodmk0z`&_pa7~Uh&kXlHAvCK==hR}ztm%O4f66Odl6|OK|T|W zTG!0MWYbgos3PEU;PIz7xc=e|ivY5hKQR#GZ>Lh~29SwcMgR}Fl71(wJOa&rCv-_f z-9HmV@}CJ)SKq+jIp!YZ6TcJse!hCY6Tqo|iq>)S@%ZJ4O)qVI2QcIY-vp0F;sW03R1buNTo{%YAIr3@f0Mjz5{~@8|1J^!UZZx|Ks!;V<}YTX-uk56{15 zuxw=j-G0+k>k-{snn;dcBYODOn^wofX?bkFHHEYyAX>c9Ez@w!5VS$NHnH^EXjp2^ z7NGI-{XI?hiI!%fJ;4J;lLcl))QkC7)d68l)9W)0YX~X0yMr8G@T65|0B>RnvM&F| zU;r%)asgLZrKod9 zFpHx;XlX?%1i@jOxm3NWno}c?<_&rz4fCsR!?6Gj?q9r{bFx2W?WE?=8Gy&8?bIY_ zV}Xm>0l)+WLS7Iav^}nn3uukxpiN)VsQ&i&RY|EhD(COHBQ0U1_m{F5JxKmR0e?d=_>;UmyneU6`qotG7Bn1?vCSoj>~BCI z5=bs&0v;eBn~;F5euR0Gn2Mq17;W|@|6kir7ew;?TL(mQ{@*cXfgXSFq!?U$$u=$? zf1_e^Bl!B-5KfYf0u61X?`p}vt0n)gmi)U~^6zTNzpEwxu9p0}TJpEm6541(2n-e= z$Qj(U1rByd8w}X}!GN6rp}`V@CxFS|4x~W=fNcAJLxF~L!4De3K#GvkuK_=;q|F%u zBiJ7Tn;bA`W16kelS~fKP*5NS%DYf^spQ@K{S;2R1SlxUD=I*mS|F zKVM>?#>xG{G~pTmrlJ*u(KHgW&wgRr&Jo()42RbBClS!9@_Xdm6!)m1)zsycRMpf} z)MROUWeSSQ3d)Ld7-bC=useo9|GI=hX(YV6hLzsIUuA*Re&Jt61qTPq2P@0_lROlZ z)Ya7$6fp`Ij2xhl3k)HWT~5jo14XtZ=n(?lNM5vc6EsyKSQ7{$?-vG|(o6{0+PwQM z{BIunolW!G78CHoe@(vS;4MPD+i$u6Ft(>@jCWHY_!9gGL~`7H9davJ5d!^#NNxoE6QD#9Vf1f{G)xH|E^Z-4I2&C( zFAqW>kfw~$*VWyF(bZPkt8`FDM@dahQCC$_TSrMpPeoZ7qxV;C+SuL9A5Q>mf5jW= z>VnlRcQ0R%u^9tknGP)pzSCYQs;L1Qx+DUaae?I-KtbIul~dd+r?l4wgV9jgtD&SU zqo}N*sJKZAo2`vh8AZ&Wq#*wAV9DoyL`+iw%t^rV(3X~eu5IdC ztD=8z;0mMhZW`|XBtIA6A1^-_4}yYs0KtQ%o|&135iyYLLUbb->FpN=w#j>W;WhAk z@OxBT-Ie4BE(CQs0PT@;aZy&4b5U1xBe=P_Dk<$z-{RNvcMGD1!WKUs@E_DsJE)|j zrlP2ZQQWgvNonuFJs2Hr%t1ZnJ=)s(Y6rJ?H)pagzW-M;K>hkN61F6014{zI(pliI z+Na~<@eA_xI-skhtf;E0s1!%bs}~?dZ$g{Q z3jgO)fX{#z4ZWzPhWskansEGgsc2f9Yq+>k*FEHZmgs)~P!zD=?~e|K`Q3yGlZ0lv|H8!4MSZk{eg4+3aP6@(T3ukHAs#n3-&`QKHK z|CufSd3IsT(f_cB_MJCBlEOc~A1&`MP3~4OfOeb;{_a2yY&G=%zW?>WzaIG41OIy9 zUl082f&U+Q;Lj;2fd~dm!C->9@e+;&(}$xtD~p3hruwv5Gh9(yPe&gPmfroqCNy;_ zVejCGX6yr-Vzm8c2y$@?4A92mOsR8i;^rO#75vNfWt6sz4-LstW&I`Ne*!YQ1(2w_ z(QDww;K5`P%;psV>=R550C-pqfKjeKH24}7CfQhlZDrU!0JC{)!oyV9brYVU!X#h> zpjn~Pd(dDwb!!mix(V;5!ep?01KyCXe?SOrLjz5n>!LU3RMsJZWP)EH+KA}pPYUqg z+QQn@kIDsc{&Vt0!~VbcpniuA{1f+QL2f~$6Teb0xH1I&cj-T6rsSWqT7Ez3a%r~AwPDcBdL zo??anzUTl%M-QIh)FnOjLNFj`7Xt$$Ba)Gkfr*Kk8Ju?g`vs$;qeIXmm>3wCwlOm? zZ)2yPVr2(sVZrt5#k!gLJKyir#$9lVm2MZToel<$eQus&y$4N$eJQ%X9$%%MdEPvt zx_PV>2K&>oFxu%=>cLew_3SG33CsYWf)h^1MbCj2;zlqiDxt92!i+pf97aT$NrzWd z<(TdcP$D?$O2-J!n$puD80eT_a85{wPKis~lHTQbq%ejX!I4~`Bf?PIZiO0{c2)jB zV*D7DqQZkN)U_7neVIC>de`mD6|v$yYFxm_Fa!fV!>`H+e9kGP#DT^ggDYYqxP&nQ zmM+Oj+K~m*bjNE&Hcyy>(&#vW89&2TziG@~i!4BEdv!)e7x%k!^h8{Xa=^xOU<p9)wmp`G@}9#{^r8^E5xyMV%zcm}Bi^@X_>NvntShs#4IIJ8L$Gh) zz~dy*NWJ(-sDgxS+1*`4r>khg8@*GpF72~MdSTUYk`&WrvTtRQ_Z=(@2B$z#4#$Mg zLQDuOTviB5fRDj5*eJ2u1Rk`FsB^->_`K2*D^~poeKc=piZvbvN#D^!AY+@(#-VL^ z9Q7y^CZviSB%Kr~itY?zVm9XEv9ul`-+2VX=@}~~@C@=qLW{9Hcu`6vZ|}i+FOVfTUI5d7j0<+B^8ykNY&X_kaRqocP3ew-5itC;4mbZuvSFC&^%nShKQ)5sK$PD ze>9>Nem=3-J5WE~gu!bNvQHOsAs=@k2wy-q*jrfO5pZp3oony{9%D%q2g~67=2Ndb z{q*=s4W*C~gbI2yHbd{s19d5vo!}9Aybk5U*e3Vtcon(iFuM=vGE{_)^c_)KEF!83 zd?=n{$Zj0PVOx}qRf1PHlaP2t6e=2>pejnwJ9a@>ELs2DEwhw^oGu7MeH_|8A_7N& zu(hZN`($knQCoN%JoYk@L)BFtC%H2vnpe`r6CNpyyLvdD>gRSYNfGIy zmMT^l-c^B2Vxn~0JY_<{nXw!Ztm07)EFQJPafl3iA-_l{ffJw6j%6{8;9?ya@QdCq zQr1k#fIA`1#%dq4*(NIqaoPzdMOk*);PM_gK#_X-QRR4!gA@dWV?khRRbsDsiDk$Z zLRgp~Ge;4+02ixjq*qRYbcD;8wm)6s;Hr+sF&DUS8bTblNM&phLffU03x}i!^?+Ny z3tj|==|G&e&|rGSjI5#9DW4=mR6I7)7HjD$+^cE>(|ZJ=iw2nu4I|Ky6wK-z7DDrI zp0$sMSS2YiHz-ymO?^aRya);hYXkQja%U67+f6h7fc{?ijY# zl3B6C9pWJpUvQqVO$=~y`3^DaaqL$V(| zIvQmK(W9awb(HKWLI^Zv2hO;GgIUSG2qN$}s#F?ch06>jOZz!du~-f(@L_C6IC0Ea z2%ds&ps>RH;t!@|a|p+RR*uW7s(`ip7`g}r!QOWwi$D(^2}TlNGv5}AgbJADlISyJ z&7@K)V3j)`+>Eq=iB_q%iz;?j^-*8V@=RYa!j%~O@TpDn6$caIU5e)ND2rxW|*fDCw%bm zB{3EEl<3-Y{YEPmmFvPo(s$3Mag9mWm*1>P;JLya#`{{QU-TM0wg^|q;e}1BMF}Sv z+oPa|Uf7<~*T%xHmFXKsT+p_-k`#yV#1|Ex6^nvLv%oovO&DzE3*(t> zqT-n$l%=7tJ`Rb6aLn|!q!QP&kbS<%SzLS}uNWMP<`vh8y5oT27JF)BD=V26jfk?; zW^H6CLmN|y%2*>>65tNThT5KxXq=!4F3A$hY{kMM;vU5T2m2P<`sLcvyh#xp@JK`@ zGx)0*$O_WdMZ#_9br;62rN|la_A@glK}eM%A$kZ2=c$N9X)_tK$WSE3;1sS5RGP3p z*-OaVxPc4wpB_(2mY)uc&t2X31PveNz(H_&W-Dei3_gfJV&J%ndprH9A%3@7^1M1Fy0Y;s4xP{0pFG^)i9=GeXJN}d%!lLDyqMh zNm|Dn8GkLUDeQV;d|gAOq^#`YBJE<{a$C`K;b%?K(q-w+kGvcc5OxS7POeJha!c=q zDik6e#T9kURx^%2JeT9--(Z_v%Lg-#Nx{Jv)+-GR13XF z(`~&>#4Ayb)tAeeJBv89EhUYaJB#sfp0e0VBVn|yEnKCoU@zCxLps8-COTEu>YT*J z`br)Wv(>}YXGcA2B~fu@b%zKiMhGY9i!AkJ8VoZeE6N??wO#bE($&dcC@wJ=n*VX| z``z>UUYzi1>G&39&!&e9%;k9ZiVC6+s;0czrdme2qM@2c##RO^Tqs%SuwDj4UbRP)e__BewP{ss;r!P3#rH|2vLxY(xA@Mqsg5XFuWv0{x;>2@|K+p3ym8BZg_ zbX%MB5n(GHD;=w9Biva6!4?;%FXU{OE~jcAXMff^LI#FqpUmG=26L5jl_Lw++Vc2S z^Z3w9IXK%{6M`&l?S!mG?QCofZES6M(rs1E(s|OxEFElZ><&pg*b3R7^)V9pI`^oA zHyvIUpVV-z5NS(}u!+A{mr{4RCaJ30N2=mwN?OIU_=@0H;OjVm3jY;CHg92|=e$+_~RjceLqa>~f{i1!bs+I0Iq9X)uUb!O>v+xD=Owef+zkB6Rq zSd(}$x9X93b^PX${2?v1vF~b2C&R_wep><<=y9-#x5HL zJ{_nVQ=L=I-7cfrQ}GJDExp#xJy+bXx2Ct~`)f7)E!G1UUoX7-=06(vq^k4##nSxy zVTVK3)9fs>x^7`Q>lIucoWAnYzjQ_7(dY1l@3*hkoea}D^dS_pq}8W2^2f!VqaGc1 zo`)k={&?DA{CW3s)A5X__tF$h3;2(Ft5d8kBd;1M+ccY3EL!X5)=VS7s&clr)w^4bY%+&)k+`}WnTz~%K1892GPit}{ELC@-oGWi~r zCS_*r43gaEK~#N^cRjb%NnZPn99PILQvI8ZB~<~E#lCcFtHXc(_m?NZpE+RQnehIb*G^6^Zr8rN;V^_@hoRm@95aPJ&VsCp1(Zn zVqtY$IiOVI@mR)@b3t9_zdT{W?L7a`E33la?~(eU>Jvj4S)My}Gf_Jxoo`G#`|F!} zS*F{H1$(bzvgBI&B=}Vq-7{TU_Fm2%>N5!mIf*#BPo&iN&~>hLhUTmg%_rv#o9+=1 z8HeQbkyL3!()M6N4zCjhzlv-{kp4tGkvaIC6$%RBm^mW?;iE) z66;X0Q9j1Cvr=>9&9$?4ZS|A&kJR8(Dn?kF(&OuT2fr+r$R=LJ%@muG-M^>Mt2q{x zD_{5Zbz=5zPA-Y8KaNXzCF4v#ZxBqx=h*iYAmr>Xcx4<;nM&_2^x+YEeAY5W)k&Op z-o4~nY)^4YRf8WgzSng;S6V;PG&7jvX_N^M`Atr?vS+;nuk#q`VGen`xGq#AKIc-; z{>F)1?bJtib3a{^%P=ucujf+ZU5?(nt*h7vZ@4qaHMrnN~oAqgR;+L>ySyUpD$F|^Wmd3WmZ zdeN#XNL0E-|5}}Uk<%??0;NjVXu$NKN{c|M_~r3FvPn(-%4K=wMbQgHv3}If^f9UW zVD~dcBzfZHa<5VAJvXxNIUX;s5FXF2cq5G&j_+(*;2nZ%+_nvt#9A?Fk5x2v-KtKJh{_v^bUBSaR>bG5I7)t^1yxg7U0NFG6KG*$^6+RZxHu?NcN4xKLo zGoWFk#qU0+%!tts$`9X;$-AA}d)jTfjk5frdA6;9G@#x))9N;t`*H62S(|#%OO@g| zljh#mKDnAL&9{7?M>mbK?7d9#oppFr;SYBht z?fjkZUa!jf56wQ!Ry*MRAO!HvQ|3XbI?y(2w30(#LoeltVR|P)6?8-C zX(I%Ef|%WC`e3>M%gOH>koghhw>jfAPaXf7wfve8^18>|qMk~xrKPsMM@4yAJCB!f zysu8-Ej<~Ojs8{R5k76>bgo*za;|$7J)Inu2;L$g=VZx;Kf{9`|1mM1TebgI-jnU` zCO)s4ovR=A==?%^&j8CW|E%N2Tp=WUZ(-dR^{`&FJZAXf(FA?Y{i_)&N(} z0vNnY7RJNtkaBRtG#I?F0?uVm_c7l**#4utKjr#L%)Sr%J#M!J-v8OycSK|E@#2R= zuUj9yxUur7CGWW-_GW8hMS6;ybumG9q}cfUu&pOoXR?u@a61mnl;E;(INH7h8YGcK4pxE|?Q>zP~JyKrwbJUur|`lwL(^yiBe9w$aZ(riP^nR^_g zm=BS7xTJlAx#BBCv66<`cEW=N_E;7x`nHS2&`?8^%QmZJ^&^R&9#^_9{|Gc_Im+j( z*`}vDoAqH=-^8b@9=W?J21HAZEjjf$SS0O}WJ{8TD`vN7K|}Zvu29}OnPTeWW95J z*t_Du+j`6YNzsy^dg@}!lhXQ*j0fQj6~zQ8*GN2y!ilcn6^@8Up3#<#f=kS;dH>iU zRBegvPOP#kjy3GeC0)tC*>QBALrzGL*FsQV$&-xCH%?)^eUI(4R8}v9pXNv4ri$LcWa-nU=hTIg`gLtk(|m(eQRLxx-vm zcdy=WZZ^r+cr!85d{uV2KXWw8t1it+1`e9P%8{yu1 zTy|zkNA8IQI*_eB_F3NT5IV8_b#1m?Yf?*{C$ICUPj#+@!(OGHx!a)XhNm8Se&}54 z{7y-qaM!nNgbZ2gUR>k%0oLaCy=UulWz|h*ZIo*T>Gb&}S zAeh%&?VK~Wkdxiy5v)wyR-P_5)I8{YRkDfn#G+(hcTd%$umt;sB~4AAj@gyl=~Y!*(z-gigp(+9HbY*r3C4+bt->?-j%k+a~F`QpTbfflz;_wT!J$5f6D^Cfs570Q}% zZ;`k*dTNi6&L6@17Gp^@MUMz`b^_)MHHGcQEM^Qt%vRNpo&ElJw|*4u(7ceE?SHxM zjbD&c8b;0O^nt8XE-LlWBUx5URRfhbe;jH4X7mUC_J^EDJzKVg--urSpCWGugnP+q@&rYX*0VUZbDKk2h1J2r4#|?WitG2M^-8ZCsCPdxpM9vBFMDQe?)go1XXVuD#lY6p z$4)AOI?uzjUz2>)EoYy&ewJC}rLXC`7DUCiBV2F z#VhMoGkO!H9=BvDbzIz^U1yJe9sYHHyasvg$Bn9_AQGn02!w zy4O3DeO=A=Zv6gwM^WMPBP|{~Rh8@9Uv{`gQ^x%`bJh6n5O>Gese2_p`@T@Gy5gDo zi1b|6X2Qwm;DE}NkoujA$Gtndi=8gl_};I~%$~oKT3qdtX(2RUd2*gD^sR;Vjowdr zb`3K%y9O&NsZ~*`cEUPO*%#= zvahL^^L=K^fUXqvHMi!~j~`X{3aeG|K6LZPHWQy-_h-jir=PvdfL!}cUuU(vx4Iwv zuzI|{P{+nm$kJsr!R^T5MTe@@t|64iT#cHaL+Zz5$2t4vqL#deR>S65b@yj)K9kEe z^{QpOBJI;#P~JCqX4^t!C6WB_6@O{9!+liCysBj_`0Jt)eDMs*HEP#3qk%^c2{i#t zZ#y*EQerz*5AFBI@BXfR?PPCphu$U4Qmp)XX7Y7zmTHk=2C^p6qovx{?Br!``7=As z?wRmDKS5^7<(lK!W0GoMrtUrT(8*KM5-@!M&axIcU{TvhA)y41kTGCA;x zkIK_8-s=4=ZWKPhZZ`SZx=97DrEL!zpA_8Pv!gZJ-l1tm(Xl_b=G!e;#GqYeP+F6_ zh+`c$Ur7AhGfI>tKHh|qOC!7wWI~rrpIc_DKQ39QyDN|FY>mA{nCtoSh0nCCv+K#F ziN1l>3qxs+@-p+S`M#5TClfOsC#Z)K*S;4oW(+B(ohln0JO8DjCo>&+_~s9arG@svjdlla2pqt5;pQg43OONmNamcOyX!oyGRzL+X9%$c27bWbbLd~cGt zq~uj>GpYXe@__OUtE#1Z)vO#&y@pje)BBg*-|ct4-51U)Av>fh+EMPU-yjD|$+nVr z?Urj{iOUwTZ5H>vB_e|vX;t%cOndoh>6X}zk=4gie;7D6z4cVi@~6yt zB;lYUE{~d*++)%1DN?hQ>Tl1llWH=GCvT+Yd#agE+*s^JD=Se*WWi;!2o8U)MCFY^ca>YiDzK+(e%ROvSID3rEh@79x=ocK9Mpc8? zY0;WGCkL_FtL()ObITKRNSVA}O)tc+dLNvtS$~i^^42@(weXDH>>-zO3ptmx!(-!z zOo=rKb)o&I#MNO)f+{Lp~t8q;wu4CdskH>xI`qf^K?e?7vlgJyb z%NCc+UK}+${P9Z0r}sNwH+bYF)>zxKs4xA|XKi`BI&j~rd)Fy}KB?+^)fC5`ZrcT? z{pIRS!}d3-2YAIIC3g(PU39E?9L0w?l$|$en-x?)c<*rYp}?Za^RJ#a7#&d+%{aE; z$tUCE>UqE9Q;pkWkH&9LOb&nT?s?qwp8o>D4Rt)!7j%Il)#@*TdiFd_HdPC=-gk1W zCBvP;Ji1xcIhRGdQR>wp-(7_*m>|r97(vI<(06W`bfF6pmb`+BUS7SLlP|7a;y!U$ z>2=_kX)q=4X4`dcHBxK-RKdzcw*2x{el7Ol)AkGf^WnyH8F~R4d}{q# zRhqE=NtgzCJ`b+h5`Jz*q$51*o1{o@=~O^?#H##7lXbdPtmQm;P0eur?MmM>^mT`& zaAyssZ<=Z%F%~OP7Y?byq50>`^XE^@{|LV@pk+4n zVSaf7`qVD?J-=-Oy3@C|?`P!D@;u2};wX8NlTo2xV0RFTQK6&MqCY%#p4|H;#$r5k zIyI<8l0H0gw}wQ6$-3JL|Gt9Zb^6k!aJXh0)f^-9Tn+NVP^o$TPrjkj*@0DcvIYV* zkN9FSd@4L0;Nx_wN&yYyJYAPTjCnlMz;wSRYAub*LgoAhn4=d~owY{D3qMnTCa<=e z=dToKklC%57rse-XN;LApWNU7=6w2|@2(3&KO_4!(-!)*3{e*H`7!2^=K0k$IpO?3 zRKMhwROZt~K)yvs>GaRq#mziWSWrqg{+F`gwWh&Xyb9hY$rk9k@H73h`1&LIGY(Z5 zCSrgtKNE;fC2<$xrhh3)HHE4%GjP1bnf9Pbp37Wh4sCcYoF?l~^^J-0i^jsi5z-a3bx8T|PyAjU`a@*`@&PmqC`KErM4;c)8{Lq^*9_&M@0L<&`0Z7Y=00nyys7iiWqB zo_w}1_r%%e)znpewr1|Bs#;imcs8#oOJ=`j=C=f%@Dk%b>ou2!nexFJ3ZJ4Wr+ifj zuhisF;XQMB ztE;r*mrlbTmWRLel68v`Sl<=ZeiH+bDEK$t=<)O6Rhp(qHuu?`u0M^E1p4Idgm6kzNXsER9uyAw;{sk5U)RjSQanmdTxX8IF zakD#bJIG(Gc5}oYl$Y->89CAz6tOFFcIZQQs<>XjULktiZjLOJ`tCgVgW^{jcz^(^ZX2p?kU6<^UxjQ2FV?t(`MNVEsS(q z=u+|*>2XXq@bF_<8szuGdry}weA5a)^Cb?C&-t8Rc;Gvxn=8`%d~zy?cJf|+x(rRO zZcyb=q8IV=l#6t4OeoeFrw7`MWOrRB_X~=pJiQhhn!5a+WyVlw35JMk~gD!ze zqK~&sAP>mvg6uU(Zo zVs$g&aqq*WuJgl1^DRlz*yHhF2S1)3k>!vQ9sko%gQ;I?AO&;KFl~KVMs!UBp>d(+ zLShJUR}lq{Hxb#RbI<+!K#~Jgk4zKiY!Epm68Z^+$6vFIu;gTUfRc{qLByI)oR|mg zzI>Kzt$h`aA6xeH!mTU*zPVu;+R&mE-h|>{Ym4a@!d&Gsp1QGIB{2O#zC)PlS9t~Gw z;fe2bjWEr^;6aG~enBAJi`vAvPd_=~8huKjyZzvC57Pk=+PV(Nws3fu9-$)PXG(2Qv*QhYQIWP zLPk$uhz_nR6eab`2RHDOtnp0Lgc@shd8+s-K@ls?eATtTnTI#+PAbjPgJ9B42Du!-BK(MT4Ep6%DMXez2@i(~wOYp2D{ge_xaCK~h=w@a@IZ1i`xe7ZGa)Z*n!l zQ)1>H7^Un+K~oA7r6LgydT=G?qn;5H9K0fhT14bq!E5u90UFL4T#WNvX9@-l*lsT* zGmS@S23(TFk_P_D7kqci_aSVUxC%v=`+|D32 z9LFp+{Ilb|b4uilz&^5;b(mHByI4I8LO_TkmKlrTl)RV7WW`o1dCqb_XA%?>E9-#{ zK}XN4TghILe_{GzuVy~Q5*#>Kl!!Wy`{D3q9*q)aG_~+zqc^foI-kWTuI05}=zu>! zS%>LkV99zEoSudfYm7xO-Xd7<3+{)pHpe`J7GAdselJXW*o0)r^guVIHI0$I{Rcc& z7dY7n$*70n6ytolzVwdO7#+e5Qq;(6R(n&UD@HVyCvtMrvyrO_jcjAiEaRcQNRgUPz37 zlFX-N#1=smJU2bGzI`6A1G^z|&Fl`V<LmMsBDhK0;${6|T20VhvVCX$~E zdUfi^b-z)T!PFgBXkbZ%hwmy|*TE_DFQFqDDeK(?`rfZoiEj#bfEhrcNgMYMWJ;|N zFEZ=_xhv|@y7me?T?s#9?0V1o12OhCi}&|__Wv+>`vWLMn|OlLvj_;!sT(sD=3zh~ zS$}wOI7}x-gtAUIyv8P&+P*rskjFR>eq|*_B6W~+K@cl&<+Ia#oAtV#*$Q@cXysy+ zI=@I%_PpABtZ9tXx)mQha)uOYFs$`~{~OVOeT8w9=(OVZ&=omT&@~eVkCG@NC$ckA z!dzA!7|xI}L}Pw~7=xmpk>A6?j4^vYO^JLLH(CnU*)Ng20qyQin&;O|%3cyI3eOIr#~FZ8 zl-cM8WHzv>u=2p(V1;p|V?`Gr4Pw@Pu8eX{g^{9&O{;HLvIKT5uv5B|=dLfX4{H?x z-x!LU^@=Yro*6V0$}SS=?+TAgo>}frC8xHVW^s00ZNX0@cUcTCe8-2EG2PgYCM%cB zti!r@hflB>uwJyBO(jRf0#zv&Ulg}o6b;+H>enH%VlZ!EWVXVmwr%ABTbyq3?Mm?t zD9Zm^$7;s(H~;=R|3S53{^WNN?-d^`s@c!B@L~K5Ur_LHd>7~u@ZD`w*-LEaOtTA8 z#qCS%tE`22r81};QZ2PRWMqw9-#bOdv>!X`bN{9f$`xSMw3%)Yqw=G2H6)5b?{6@G z?@ne)4T_#e_tqV=(-dH5&BAC#e&)jvfz)%;$xKPxhWC|Bf2T{nBWYM_8Xtc2Ob0r4 z3iP4i7dW2UT><_&FzSrp4p4v7s!&H3jhoGoj5aVr0u^Cux&af>6Hs<>3k1e%dg54; zhJ`}^S{jub=m>gWCr}dgo7@5U)4)K`)1x^|Ywcw%S*XJavkuVPgRBMoL>+Yy06qbg zk!pQ2=+A*ms3VU_pf}AFYNikduR|rJ(f#!WqYB?b+f%r=K+~-u2Pn46PAWqNjBvI{ zi9jRjxF!IMmZ$@t-=tZXP7DmwNgZ}kS?ch@wWgPTNtCq%qpPHNU>+eJ-%DkqQqlMU zV96R0^cNHdybVupa>;pb#g}$VVZ%<>E0Sr#3!A0U*f_E>Oz=zn zY)n4;LkY>UcirK~vFXmsaToe86XH9M)#}}o@;ihIE^O0O=tKHPs~y9QRTTsg4ESVu zWe~6I>!=1)%ANI|{Q2e0P8sw1h-Ob6mE&CQJNq+|(LA;Gxg>>aoGN+XioyXIHW=}i6G1p`RipYxKIV_1= zd}=u)oH^V$JZ1qbHqG-|KFzVIN}e8C#x0ztEDTHuTYuIFX9SBaS`PE!aH((nsijlG z;a5uaQ5x|-DBNuI9pVcT$%AWb>~f#8H2AfR)acq+^XJp%CFZVczp7(uu^3&C#gf6o z6=Mr5^-BM`K8jmtJgPgpOn{&6jzQvt7Iq$w(-Z(7+=8wJx$i^hMZCIv1Xg@z{TnfP z1#33geM9P-5L*lgm%S1oYE$BoD;SB4c@R_q?NFA67-oO6n7TR6Ah}(yBj5JZoj2~>!4vOpnuYv|m9-Y9#%ijB)OTb-zol*+d6FGW zuEeKEAViPFnr2aJQg^Bb9%t4*6~IU@E|n^Rdek?@b*3G|!;~DSgE(eMFQG|Kt8n&|y~yavu^qCY5LpZU{^`^Y>tgU2a@U96?K(2hHL{Nk z{3ZcOfwLBN9nYjsGct`Z8^rx8H<>A_)Ac4^gex~mK2lHCn%ocC>>8k3%m`ASGremi*?-^$mQ-N)?9%&`YtktUkvjum(5~4a%DWS-$Y_+B^_l* z$7~jOlzA-?+?&wD4mp6w;#SHJ)=6rx} zSECo^W1Bx`o`Y%+Z{I#eiG3%GoBE(b%s^hO06=KWwgFM*l--K@sUPDr56Zk<(F%{! zh{A`T5xHZKJbbETzZiyTz%;@%m$QHJf06VZP)#+@+W|pCm0m>%H8kl(cu|NDsz~U) zgidH82}%b61B4!sDoUgWLa5SD&6S?JiHyQ% z3oLadazMl9@RlNc=|=Z?jrMyLwHc6-RQI>bmPoCKB=ZWdeh9q4Qo9VDGp_96PPzh> zXrqCb^I?+#%ICEC03O$;YQVG2E$10NM_K$ zeAro_vQU=3-~mx%lF&r?kTwTikoI2;4GC#_I9RL;O^Qx}4Z+jUSW!)s~!uQZ(MlK=zF(ESICvdcc zC0@_X@|BxVw}T6$i%7E<(i#Np8*ns@MA4jrQ0gi!kAyXYx@TzZ&h}D}rv^4`nnA8; zjUnlKgS~S6G?D!_MEA`fJ}ydG)GhGNU#aDH}?Kur8mx! zNTQx^YRB!*X9x!}Q-GM+G$mXBz!?5-(To&)0knA^5>s0C7z0Nm1Nn;?gw=rqbre=I zl<@{bujjHOW5}||WP3B&F|E?{;lJ{739f!fXn})ivvdubF<`4`?&~A>m06|$-Ft%Sb-YyNQmW|idWS|XU_(mQH9}ORh zqTK=*@yyi)^}+L61Ui2*+-UL+VS)74-M`E(xo3-~c7byMa>mh`(g(jN?wG=R)xpo# zMFB+dyK6AaQ*b0bh=B|un9~Exu6;*9ize3g74vA*X;^?c_dC0 zVxa1KDNA}m8K{OBS}9L8S)N$_6mHA z;kQcYP3O;!G1QH>n*^W*Wq{GGG5kN+BoZk!*7a>>R?1H`Df%J}dQSyW0)l|hkW@&8 ze>DZgBeqmJhh&+3C>~$Ru6&v?ripT-5hjZegq*X1csDFdD4ds5XxCZ!bpa)T+HQe^ z$;(6+4a*Zp3@M<7$OJy3HRns!bYB83%ZX~192gK?U}W@zB|_2$rHpC7$Q)Td+}%%K z4KGsY7aN$-83I zL*b8vo#G8R$a{rhF{O%pX>6b~&?G?9juiR6e!LvbCvVGnOPCS3{xZl>H%_oGl@e_k zGnC-lBl?m9ODpodV9R z!Vmz5Tg^xikqPJgR0bw2k7!MVUHErfK;vjP2iGNjasatyiD+v{fTIS8p-Wm&Sdyb} zLm-1ZG9eY20M915$UY9dg*)x7y{-~qv~B`LpDdpoWwh^HEgwsFHjatyUZiDg!X62~ zn8UfNtJloQqA2Vsi-S;;nIn9hl$C0hSnK^V6jEYROw1z{m!j6CR=h zHK_2b(Y+Z7E+h+JLWl;C1L6UM5yZd-Vu%!UUPc>OYPSaQ6){utbtf{I@R9re*z4wa z1^;wm5P~iV;Lr9SVamzS;a$#=D+5ADim7Zhs1oJ)bW)C>pw_oQO?JK#sM>ryne^jD zHp>=}qK;MulZ@r5W6C1CCS`&QRqNUh21bgqfmW33GDEBCEg8-GeQ61ON>A@@Fn&}y zFHx6<7jwjuuw;^`DyDy`?*T+#r zla03m3~D(q=cnei1~F39MRTO;F$!_H@IPX@1F(&8Uh1N_g#uF;(Xfz-MmuKLiITI4 zvpAAGfQf8h6s3&8^K&+XHh%?p94&lH3r=BRrQ`;3zR)q?Oz4x=WXNunb?mx75Em#L zMgRR?q|0Dzg4z(-H2}Wqy!?`JnO+7=GBOVXHJPm1C?ci^{*lFbk)>AxhSn5dhe~iX zir?*(9rzFrj@G4NMT=(KynraEyWGGru@u>`qMtF*gI`&;Fz{2T$Ur3`yh9iu?sRkH z-|tzr%D_!nMi^l629Q2!Z#|j)1kj8c#$3qxtIRoa;P7uBXju$pUB-Jg`S=+RG+{hMV6U98%V6(2rW}&gE}QV|wn$6d-BBV~ zYYO2{h6+@-JQ*OqjHd3Bm4=G991UheO=|i$vQiE5T3O>oTj4c(@ESolV?0SB(V#~} zz7k6;KW$ZvlZ4&?F$Hzd%>Z!W-;o}6K*npbz_TUPEmgYZihz)N7>;Z_8|cD`gP&vY zW-pF4Ua&hY1y0?|3Fqi7VoY%&k#-Y)}c za7L;O*&B^&DGPb4diiiP1W@o2Cq|T5CTfE2jxzGZgh)T0>zi_#>l@+cfion;2Id|S z;jnn9+Gq$7sIJR)gJn>|c`4FdtpL#BA1ilA>=R~0ay>gU{4BU0X2HOdICE&gc296Jj!a}6yg3yBO0s@J`f@s_=%hQ%9 zgW`B{aIf$cR1mM%i@Q6Q8LugP4dZl9S+sn~SMy`g%PvT!O_zNdIH`+4uy=0ny!#)H2QqGM1>m89)&^*%wMf8D|zg z3@4n8#DU0I%1YDR?Ip)R`Z!v8@fwym3OFMgMZ<1c!}maKR7W$2ghd&F$!9nwBXk0& zizkP-j>WMJK>;6n$q^|d_39aA)D0?-l_ljX=bOqBKz=d~O#+jAdXg*02N@T038DeH zG#rkxgPY>gyQ1PPTmENQERXXF8|^L&{C|Kr2IBiguIw8T0MEvo1AFo2LL8aVA6o@T zX0^cJf%XdPP|6rij&y&^%y?jocBqCi8a%^GK{68QvCa!d&d~$_ZAdnr%JM|!5PTv{ z3aMmB1~V5k0&2H?BO1VfT8_Jb8XATq$9G2J{ev@*E*xdFjO$AY9ath6gE`=(O}>>A z6NVoHaa{*?V=E63$Vf|ZGNR)TCZbe=Odz~tgk^-CLn1_0<{q2~jGjB`Voi|F5*Ez@ z4m66hYpgvbgR>NUBxj878&4!~;{Z7OXPIzW87K)ak1*Z(bw|dsh=!w#o>!q!?P5XEemI&10sus}R;fEo%CcrQ0K zici4Wt}piSOG7D>yfKVuU>^sn3$G`g?gjxl&GpJecad~Tnu7brsbS7&Xl<;AG1Ue9 zD+6u0{k^Y3>#nO5xsmqrUdVM91ah6sX>O*?l_L`@E{+j&{MH9IrzEi%aQ0^(0shoR zlw1i%IMzsTZ*!C-iQNn&S=bWQ9aB^T9$!;+8CUrr%8HN zeZ0zsfbo$O(^2gaNq5&hQ=hsDox;?jw;vjD#^^ikZHVVkYu46xPlW z_MX6a>n7cNlqG``>uU9*pJL({uC5UYkEX3Bj_YWCy0A3dDR6U0?wv>y6tHrpK%kBB zFTp4o19Tus8aSJfZdw3Z!Zu5Yqov!iw^t`Ss0+u$m?**clH|{6pF+tva1?xuK+>di zr28E5lRyQ1+a^e$qGs(EA7H{6=q0yH@_12m{fSh-r)R}&I4j%SkkIKbR`C)u)#8CC z<9oPfD3F8DbjGr#WI?X+SI+vwMu7<9a;|6v0ZZsxG6E6bgu%h=Ws~fZJZ9Ro^olIv zxyH+f@Z<<6{bO~Ub@%i0v+;M~(jmy**beeGS(;vrBb*5ia`8-PHHWd}ivSG-zi_2I zcWb@A~b6x10E7nyYDG`nFee9~x^GIm1*z0(%bFM*q1+jR0e)dFSIoCLzz>^4oxjbWutDb08R3uh~8 zGZwEsFOqv$cX2dla!5#ir)?B_R-KHyQPI1TdDf?InRyn=b6;jEO&bYZNn|61QeqO~of&Q^K+lRKU9TmMtuN|GS*yubxH zXis&&mkz`KmW*;Rwe~7o=#VB4F_o(r6Q?S&^r`J;pF#) zM+sTYH;!Cj(?a3$(JK8qJFI85;2kV7L8ZErB?hUgZ>_~+oLufyac769vRqs-xYMU^ z4c^5fu?^=1j>%<$J2A)}mG0yZCU0@oTf0ofgs;{+)_ZNh3DdFz4|~e9%L^GlDu*PO zx1NXJv<;+sX^!}lv$YLDJnF^o$uAU{rhwZqf#Z`7@pId^F76HJ@<_APFYzd9>$la< z^YA4XzVMP&@r_{QkxowKw?=Qbs9=(dRH~E9ji-UTl#+p@ehfM!l;Rm@4v=ZHF38s5 z=;G=mo=;?(+RxOV=?H#-y%l)kY5b#yeU0+WWBb+rnh590Dk5ouQCkQ1UXM$b=I5}A z5D$MR9S=Wj0=y&Y8520KZ$g|73_Rz7K8&%p_SinndS^U!kE9JFTm>YnT-&0)AxGb) zjidtKU$fLCfwy)uB?Bhjk;Wr%x7-Len^6#O4M-Bz3!b1ruw}K#OAVy|PoYx%4w&Q$ zlJZql5`WIFmV4sf@BTb5kY=0&Zbv5PW@S5<6_Y-&ssDAOVwiI0VQs`* zp$$&*Fya7o5O(YI$BEPcd(Sms;dVmE3(w`!y}-x!LTM(>Q&KLnQu<^Zl35yF79h`d zk4P>-S^Q`%`GW(7amE47v3o1)gSP!WWY2|Tat(L~S2?$HqJmFu@-Hbdc`rxn=C^}WPHfIYCZ@Nq0ZZ3_!tLGAkjt^FrW5J2&e0CK-vv(&3Qq!qpZFZ5 zoZ!x%e9@kX_^@)Pv5IhV4fr<^dl0cC_2}E#%DMBtz@AdX;*(?uVUPFlVeZAhe_@K7 zMV~mw8^TNR7fC73)S#on+|ZP@nSU!MpU-d1EM5c7`3PFS4&9IT3ENVq&gUZEB1Hdm z?%n!x4H&vCKzZzSZO^AorC%V=P`V*LD;8VGaEB|>34??c+Sm2hfH|cYp=-RG0V%b4ZalL&>s>`jdkLi3Cd1-~NHzF!iXHn>lQ zRZXxLO^CU$1`9GVvBKVn`YYs5$Mm2+^B^jXvS&{fApio}8!;^>ircPSxPVLJ^E`F5a_d`}} zG#3Aw@9!M??V&Woe1~w|s@~+tv39#{#Q0uggVU2b8AU6g4L+!<&bQUGB`In5Q%BR1 zjhRY!Lwk6d{NB!TQ@!^^n4g_PW#;LV>D__F`M((_EjEqec30m!DTAN|&rM9lozrK> zn>;o=3$r||)!APCVq??PmWAbk<3|gaHy8h$|3k+2_0C&$Hu%(>JjE6tP%xaBt^P=a z4ArAtjyg0#<<4i%9sXS%KK=bLE9CF+BDSvqvy_t_pURmjnjY97*0xK>V~z5fUMaAz zv=$7O493eRSrbl$7q^S{|Lz4REpx5@wMm=}MR=J{?jjX_&^;&~LMQ3rcTQ*b;om2!5S|42dvRZz@Nw;}-11(Jo^32JlNQVs8rxsY zuz7FWl?u2y>gfxmImv!^87`zKcA;aKT*A2Tt7Xl6pF;j{>xds;`4Adz^AcgbtUn}6 z?l>U3@b#m+r9-Q4_b-D&2RA$lRmR-vG9nq_+*~TN7lzt5-!ZYOwEr;KR7Gu&;xYJg zqjpi=_1$jPWltG|{l|Xeror~YF*lplZUa*CRKXiKuwZ7EWuyqQFPT!LPre4M+x#fn z@>^kS3bT=&#`q?ko6L6pZd6OEJ4Ri3EBGE;FTNRAL>QdsHQZ};p9{$oJNuvz5r4cp z|4+4Hzs^2*Mo%XD24F)X5e1VT)X5a_9yOdcE@5bVS}oV(uzB$@cv;m|t0}m>(5aQ@ zQyRZ61;3TDzkbiYs%Fro`Ai$m)s3JVHooxZYSvJdTlEOrDC8qs?FZK381}b*^KTgX zxp{Uz^TCR>lEtBb_^aCE2bLjW%6V0b%URXS)@!?jYL%;Vc)Zymt-^`lM2o!1(W3YK zOl@U-d#EqLPW4T$A5`3c{OEi0vY(rdK%;3Os{8)= z<)6lw0rZ!>++g^>q)|)!M(x z*LC>$+kPG1Ez4(vdSBWj>g!CrcH4bAdgg;U^p>}D2IhD5+9RCpWabu{;OB>nE%$-_ z!U0*GRTZk-UwaB2oGL7)?)t|wLe@kKt6JrbV&w$Db1oFN@oO|MX+W%@p5*eQkp`}o znFH?n@Kh>HO!iaaaX^G0Tj8PTbYTeeDi)w5$a#fI&8gyp==p1 zF>myr%NGRZSG?)-y2J(K7c1}zx~hsO_ovByn`Iy`!&g*n`ApK_PgUt2M(mYxUsfOV z7K`7@%pA^eZ^G++%9E%u(De@C+ymX~xvOOgGFHv_`GVy;855uJ47UKMHj`OQj}fL= zWfN@W<6o~=N#TWEt6D0UcD++fpp%TS^RBK#Xs?&LBi7E%=Ie0HWjJiqy+;zQ^j)NV z(VFF4Js2WvDOP;MK&bGAueE0mU$1pfRSGL|(=n#JHst1PVn=Fosko>2R~^e)>xe&3AS2)!Q7(E&MKnv!$+VdQspd zTAg^aNuOF}bJx&=j)M3}m+F>n?K$6>;?DNqN{5*cpAa=sC2!A_N=2*zkiTcx5M$tq zhLdyN`_^m#ARiG4l&lV5b0^I+I&KHH2y3`zQ9#0{euMBqON!Vu*=$+z4>5oQp^q^D z@B@Cccq%3rL7@w*YS}PM9fM1gVx<}rzOSq2&>uJ!5QpbVs2m)Vfqt-cCn)#iy8S}O z`eo9e*tzy(wP9~5u5@*EoZA*W;SsV z%XkLMejN)iwH6H9M%zQfXX<2bIcxd67YbF+0obMx16V$)I}6=sQJ1~&$7o;>v~R_wjNBR(zlis|ncY^N z?@S|b1KDVO>vw!?-NU3Bi&dYwisMB}i+5g4(5DrkwA2?mT`x4Jte?sXF^Sj~3rJnr zTk>^t=9DdhIC}=iD!m6j14S2pDt!h!h^^iJHQ8uANpO?&_Iy6&4xaY6oL3pj<02La zw}|*|(7Ma;OCEmDOq(GDuRr-1Zbjsdz;`&+8Fn704DZ!m19l5D=bjvQ4h!%&M1@uq zBz6+6oK&mM{D#5Syt6CfUt=QhmxR;^YiswQ;~)4;8;6_6N@AUaHBsC*6$PHd-8}DV z!mgAT_=K17^s3r?|9n})?tBKSI@=wQBV6fQP_$6Y%6DRr`rg1he*<@sdaKXQM5dy| z-a1nnLr?%d5_fiGT-EuJ1IbJZ}|p>ZVO^!$1@cVqP-XSQ()l} zxV6P5eVcy==d+bpZO2bD9RPnIurrJIai6aN4#)o0Df-16A0aFy_2@}Qa`u;8lBrxF z@96ITm6~ZBTD0ZEV}})nb*6zi4#08;QD(lMqq#e^;)vzR>adg#C#_6har55hfdu^C z*1TK)Y*nKYubrDh!8O1}?Nd^O(~ZYz*kgC(Yp;3WXzsdgTSfaz8p3?tFMIu8^}8*k z2x|jxQ-@V5Hd3{)b*0(_k9`CWictvg=m)O)6`ypZx6}t+i8_+v(;Zb+*4X@xTH7bq$Dpbkvi&KY_WIv+vSoxLywzP%Tyb$(x8Lm0D^O(O-QiwrFv2V}q+^ z`S{H#%&xiBHa5>ftihld_4>t@hW_kE>8@mYVR_BFok5XVt$uXyWmx3M%%P3r+0qZ< z!-Rg5!am&k{8?2%*1*S@lXgO16L_v^`m4yEnu0mvF!Z6{PY|-`;~pxexDz~<)UJvn z*6sd`FmtJRg^yiH+hX7^A2yO1;j|HbX^AbRUULUbWCxqAM9{=>}ldf7;5QNZs zNg@{*3`#9-H^jm97l-zo_C{7^7>lCoHDLBKl;u*XYB)H&7Uww8KWt}Ly1^E_Nd2IC zX?C;8>*47EC&mH`KIb`R#E03g7K0sTC5jIs4tH#>0ZL2r+`N3XeZ0;- z6RIZB+!k~HwHhhdwM~EY`e>L`8+rUa;1vPm%JaNS9{%_(r#B$^3$+bj`68#dvq2wr zrXQf`ObMdm{&T!Z_~o!`jcQoEd{P_KK5*RJ^!?5G+TvHd8LWjjfu#b@&tLZm(xr*I zE59f%a^x3t?)Pl3gXdB=Ii)|MqF&9uu>Pv)xYc6oLL5>M63$xgnicwR#!~$3RT=tK z-z6=Je3%-|NTu3A3ks5XkkrfUrKlpy1nB-j zz3KkBoi2RxOK{H@W}1qoEb1r|lElywoE+y&fIQHt?%@jdXR{{h z=(7+IlF4ndziD5(6yos6@3^oxoUS}#_yO{=T(UDNI3+tY%R%k$NoltlZ~rx*ri1r4 zmBGomRL1%CzqF%>peyZJ-)n&5KRe#kfkhhe!us6TjTwc0{GG$Mk}pl{pAT_nZW`BW z@MIacmD}6yNvSABc7kRLJ{P=*H=dLF4m}nA`4tXp?aUUn2P#Fjt-h!gUP~&bVaMM8 zfc2&I5&tx22~?!qq!})s&ySpw{Ju})1lmzsw!Zam60!P}gv#&zeek*cZ+J=LQv2<` z4!X+XU2(;;>c2wA7qc7orzSz0ToIxx3sci1;~s|nTycHqcSJ}D(F?lLRdXCLy>Yhb zcQC!XPsbt&_#3Shr*tzj6YC0tn#E=t=i&I1zDda^{3cHtTozFh@M6o{blsrT+wi58 z9CBZpvl-UNT)ues!Xg#qXb)i|a@)Ol^uo+sr+m6W;cQmDe+WGp;TL1Kd$M=c_4jV| z*VAhN;`CWc@zwds-A?mszyZOJb-TUo&-$;zJniL2^PzQ1p(+2a0c#y=EfNp;X3j?C zFE0YGbazQ=_h?4G0047(YyrEHPe|wcf7Or%ycHU$6oG1Q=n0F4l&u2Fq?%IpTcDYE2&XsY(FSVpJ z&trR%M3b`-Cl2K&ZwAh}H}Y67Ud|uxo{tdJ?GZ7H-gnQrKQyiI13;OMf~{XT)!*-z45}R+?q zklKpyH|r|($8U@61nG1b&oTi*V&klamGZqfqFHX271PZ=|FpIqlZGct`}4bf8P7Mt z{|XVr-IH+LgVlp}!dq6mpyIzmZ(gpqb_$>Jf+mi?E(RPvI=XEAvHPi(dU>b3br7g1 z`zso=o9o>VrcH~K(d&~0RJ(2`Bhgx=dKHcw*4k(5vAzVcxHowI;@=y2f% z?9P#FHjRVB*=XOLgiJTbv8Qs49uD5cZdn}yhGsomdzx43qfcsbWb3h#tWY?^o^FC$#vy9&Blj#B18T`)sdujHVvFI3&y zqBt|f*}^UglA_#dpNSGjho~ZB6G<7XS-)5}?G3+b`J|IWO$1HWn6dnmp?w*(DCo#{ zH=PPEc@rut7*;yrO?#BXTgv9My{EBROR$`5h74#qjf=f>qs-k(Uk2Rx`TV&9`l58B zr6Dx<(|&VsA==x==U?)#yLB6~^M7x(oqSpR6U?3Z^^2TqdO>!Q52=n%Oph#$qH$jS zc%k?3sG={Xfb*3cQe2groY@s?`?)g}Brj~P^+sn-99y|hwJCL1(8|?~soG^uBR@2e zkt511x|N@H-PDy^Cth&2jzEV#F!jQB>5zlObYF1x8Kfay1}#)}U*Q(t;ICkNNXaG# zxDnwSH&?Nr;liKQL#fKSe_?+Io~?2B`sGL=_HI{yIStADIC=31Zu)5B&DOt8XS1Ug zoYaQP#++%%x}cjnlOU&ztks7gVOJW?7dP|}!jPWW#0Os?I2C*nYF0?V(C%mU1^Oiz z^gN9)MCmFk$C$?;>}ocVx>&7f)miyC^~7kdU?FY+d5OY+n;>P}<&BlDMwrK12I`Ln z0+ga`8-IAt9zE}n>eR-sTn(Qz?d)*_>V9jovb=^Bt2QqaDC=-f#c;iUr}A?87i57S2&H<7uYs9wogNe?}8YqrTq-NFjiiG89* zKd5-hdIc?hiIThJ_C@pNs04nHt4N3{h%H~Y3))`wZ|^v`0k$je@pHIvePcc*wzgl@ zLj4dXzWsYQ`!B!gI!L*7y2=H6T;lAIkS4AXQ_V)BfiaMcWqW~AxH72=`?%x;TV!f= zd_9qhaHXs6@D#g$(;8 z9sgL;b#VY!RL)U9cy6dXZ- zGgj2m_-3Z&7}pr%?sM)g@cK=8?N!!G&Dwi!nnonSU+6sH>~AaeOQK4n)_f{IsT_Y>VJ@5vE!L2P*WU|sP?8;3-!YQ{m3v!XU9r6 z(>OYILK;8x!_F9D@;2O5HcQr=6KF*cpSD)&rIt!4`75dqiXhA^sdm);tc-bol&{-j z6rXH9ax2X(Z;(@8^e>rG*X-_5tM4|nP(O4V+we2^hqn*6`M=dC4Fws~C(ou9j_oH1 zewC;82S_>xi)J+kr^jmxzl4Ge^9iYR%OsYxZ*L#yaYz$p`aN(6s1uueUyreI(9X@w z#>ZuxYMIe4CRYk?MWo%WG1MOB14;3iEQs45-H&Gm7sPW6gx9GpCw!92_i8+Mapy_l zdnu)ipI1SNGGVZYg7j9s6^h<9#Cs>s9{nL;cJ3%020_Q!o1u1@SozD)Y*yLHpfBL0 zwaL4DH-45Ma%R3KngeRDew#V%(=!qVJt#<}P*ewj`0fxQ=$?hO=H;qdt6cqXy9Ssw zH;2{&UmFrS7WQIdraMG)pdXf1P;h<;@(`n27ATpd`kYCmQLqz7k4o?iGmc1b5g^fg z^Ht%f@mJrWlYZBLWPzsE$8{?wsIt8U0rB@*=KZGVws%A#K~i)!FzkB_QX~u7q9MzC z^Ft)&mzn0^DphPGUk;C;up4o}IvF zXVwd;MLeqeK9S0N_s8_4;WGKS%Da7M_sUb7H}3RLLb1t;W(@=Z7YVFnHbzj$HQU1L z4O6V9hGz)avuY9NvfY2yqW~R7ETk{i?mPMXNf)2Jb*64rNhM&~fN{0O{g;n%r4^5D znRb&H{^Vh1KMi5G*jMxZbBGbg?*G!_)YOxszsKh;E>64lR|7h6{6U)&g7=~TmRmYY zne7!Thun5|JsmU2|MSD8;_PJaR9@|U?t>bW()QcVG`;(LZKVwy+7F+!+b=fJyy)T!@q>ffzP#FK0askHV~ne+aIOoKJkw858$aSVkeUGO)64{#<$AYZ@t?zc1YiM?Ntp zsIgz!&n!cBQH}KqsN*#ksv#>z1FdjX5J%U(4s?E$27zw;;7ujwlk_|3jp#?;R_r^M z%9viC4|5{+y>3O{rCca&6zmNK8EZ`FY>x5yjeKPfP~oQXOWCTC)^sm_^qYWDqf68cE_B7> zft<>K=wGRl!E>FSNAGA;_5{TD{3j_F^a-rq(Xre(#g~BPq={{)Hi*You(}L7Y~P z17C<@UDvVea`QS<{1UQHKwP~)#3dE_+Y8WR?Q^DZI304(K+lQFMtQgr=XO`tz*4!* z%J(T#IdsU}8{_@z&GxMJYifMvWUbOB$F^_M=O>PkJc@UGKA^5)YNE?@4rzOrx8~>= zV?Ucre10(vUQU)mGNd}c?LGsd*R4FxD3jbD<4hA%4D<@&t}njQf9eC-dFQ=5%dN<1 z_=`(2rs3h;&Ot18m$Xhj%=mLp_hK$**3h0q&zvekY^Pef)n2+-$8es}QAU>E%u+aj zxrusr*l|{a&5Vfgn!6}B15q|qP&V$(BT4QyKS(mIw$2r4B`P{#26Mghlc!3AXp&GtHUgqH zu1u*Djq^GK1J%!zhDR)-Z|?MNVb^tEB|Ob6YBrQhtl!P=ioEjHnjUL6i47<)edPNB zu}Bc8BHF2Pqs*Spwi)4TEZsaNPU|ObFVBy8MBFSowT|$#&yg`jU>8S``;B#Lmn^ z4lCdejJu*^fE)fNP<~C~_zIlyP!RDp#{wgof0RFz$^MnT;k72+9_1o*Zp3#ew|HH_ zM)c#Hg^B>dyPDlA&z*CgKof8@O?*6gKgUFl%1n7qNg*zq!^(D)uPlZ%kRYGX!;s~8 z$iFJ1QS>l#(pyFv3e9Q{{ULCMa$fO9c8f;1CW|A=)xH6%CnD-lE-q9@U8K+uq~yx` zq>3AH!YWy?i`@AQ`Ace|Y|qYh;at(^U0v*J-;XYj;KA+|b5=y3j2iW8z}KQ{08HIs zy@{)x%2MIdO)R`pReZceM&j`r^|dB54PhwCQ_n^sGh?mUaN>=SF) zbZv^@CZ`SOY_p43<8WA94QtLGP>+0&!v%DE@Qva!(Ued-g4Io^Ho*?2=54?YH1~7J zSu>o_3JF~y=Iz`tv-wueae=T$21EMV_K^L=9htd){-;=js*ZQ2_yX2&wN|-0Zjh)s znaslLWXKZ39P!Tvt-|1#i9)uIIYr|(xtmG8h-aFMfxBHrhwvV1`=sg6|B4;%dXT^Zy;v&rqw*gT{g?fy{m`&lJ3tL z;0$P|P2r_fI@DE|Y&{dE8qQhPOf7SY+Z(#(vQe>alTN=r2Pj%9`go4nybjm;$-uy% z@O)3@*iz}8Ey^oq)A!TEo*YPJ#Gd!Kk4bFgH2};k08*6@ZmcL=1?zdBsTPsxvA?sE zi%ZzdJW}JMjIaqY&RBsYnK7`kaq9r54=2}&li2SbxdLQC;!fEZe4ECwCGL|_9s-To zNfHRiHq4Wh!{SsWxPF$=rq&aLO_=U0ik}VksP{~eKQFhY^d}#JjyS2IcPGU+;O^d= z0@cn=QDHv0hek1das11K8Cmk#*68U|7Xx z`AkI)>Z&9n_9+%$n4D*4RzG89Kpj~E{cOj`89c-pPB|X)=U$A^2Kk~pxk&b*pv&E+ zgf1MJ_fa8Q50=EJD8B#GK>e{5(J8(b_6FupVcM2nVPU9JYX6jPthmY!g|HA8FMxdT zK3uHT&T8TJd;MC@r7NbG`xuWVkBv`4!jRF{PjfIoln0n;#L_VGQHxmDd@0PKV4Ap2 zK~|mwKHAYqUSW?ZN+y%dP%h?EleY3AtVMCM!76j32iHKZTLk@vz*bX?8ArAlea&wV zGw0ks>yClNGFkQM4b2Lu3S+irVpZuIt7I#Uk-4PbFWr)okTNdCT2HY)NnAfGsr$@1 zELR0WA`n)h@_icy_HMUnf|k$UP*U|v@J>i?J0^qUjaJ9yS)&ELWN5Pf$y9(Ot zhJ!ZTeSH1alu+IQDv}9;>(@8FHg+3G)iJ2w;9V7^eryq!kE41~Ied#7WSRf)fYS5_ zt6fbU{5OZ${dr2Cr}ML^>79lTWK2Y%&<7A9&oWNKxNE@A@!BALxNxy5NNg)h(S~#a z$6RBc7sXU^2xEs)mahT{2N=_N`}aIg4fL+^sI{>szZ<{bOtF%kNN6WK5UE` zlWnZ%-IQ?k9^G`3--bAbNRB9+R2Jonm8hI7-w^=Q{s_a4sk)0gpfTUf`}}h+)TV(J znx$q+cHd^pEWIjjW^jy7AI`W+(6W z%nxVErB9GL86m_L!0^EIk|N zC%g&MJDR*^kK@8yQA8hZx6cDhCV3OHG9ZfvlJNOQC44VSK0GS#q4kVZ?OleACuj`}adC44~|b~7`xr$ljqU&Ib&m>7it zF@bAFvzaCHTva1@)t>x3H7_<>n4CR<$=v)M-lpW6EaRl5IM$A+G$ve`M7F3lYeR#Nhby@%BH3mT3-3|0bCCr_gqv}LMI%bz-HmRl$}VFc zUi8{sNhSo`pW66S%m&l+iq(w`H% zvXP?*&kpHp0IsF(8gO^zO3nS3zL3M$fnVpm*8mTduOoDE15bpUpM$RfBX0N23bP_2 zJWmT(%&q~qTT;FfE<*PIA|u8v{^KVotXpm6xVygzdCn-2ls#^nN(Sbz6T zR7@sVc!5TjL``DZ#SF!n9<;DP!5^<0o|Q{tO-7t;5Fex$0?Vgw8NMgA)ip}oD)l-S z1@iBnaAyL|Rm}SB#GZu@{^4PKHCax-q0*rJHb3#;L6zqpkjU7fF$3PzM@OtkHmO`R zpb;Wfvz4|>Q2|;xxhPoi8={Vpy)>K%BoM)~MYAe_6@@!>TPmK&<2;e`cE#@RFP1Yl zgMD>|4KwOD5dylv-aVE2qO=>^Q;=tTyTy97RKq)!j|xvKK@0Ca2{}{-k2C4pfkphD zntoi4*l%hBgU_&)EnkXvGR0l>4r&blvWxmiyVbUG+2)D6hB6@R`?)#NW#Sr$I;~2j z92mQO@4fjMnViKj*TlMXoBI!fpnuC2U_UvQ?0+YeHB^(&if|P4y&B+1mu_rUZ0{GI z(HEh9`ips;Np5xDB`xv6-Rxn@#k{qnw*Ixh_oRgv6bNyR(9p#HtC8|QjjzQ!tW7K# zPZ2(PPWcGAluwz@t+)j7VTGwPA*Md^Vg~84&uc_y3YU$w*z{z*cnVgPh4jJ~`4vI(>>qefM{{UkJN%Te*7Y zinYmX)!NiNvm}4(=nacvL05cP;&|oPKf1CZet#xnJjY^Rh1mu*x$4awy;&&@(-xbp zEmGFf_K{)a;;ky1qHa#!nbqS<-f3tyJ6`{jaHTdK{-1}vl=YP9Bx6|1S1>wS&7=pB zR*igjhzke-(*euhYLu(Yy!=@{HU1qbVzOc@^(VW^xmLVjjo@5Xq?<8TRb_uUJ-ni` z=C$%T6j2CLmz5o))S%E&(cHPMVw*izS)GKpepuk3QS9Y6Z+nh7y95A;DgeRUTZPn$ z*^{*%G%NPVM7ejicF;qo&)?^qI{M#xczjN>?P7tXk?C_byrS-Of!#^+EWX=q{`SSC zAoZkPd_u;@EeiTTs%Cz1oquuwWLGF(Dt1ufwIVhd|h46bi#3=okDiTLXvY%RbW7`o8 z9#pte7<_ZH`L4nzXePwHF@S)+W-@ANP+XnW$dQTN_n9NcS|2 zq`q zF#5ms%z$bOx8C99PEn1s2Y7EooiZn{Q(?B0Uv7loV{nte`VJ6 zeKtIw4bb~dkagMHDy!k%Est(8URuT?t#Qw@>ud9=HXH>p0yiB60tAQ~&u=OtPRap} z(Kl^kt=p{$<6T1J>C-D_P`I)&Gl+(g$^nTY*RSP3i_|W>=q}T^85t(TL~Zb*ZEkg& ztabkY=(;?ZSFLbVIQNMP5m?I~DbPUUOh7wi?dKdP!h>89p`z}^ovzGypQkWCom@en ze+n>QHlv+GXlOv)AB`CiHMxwEZh6#2yC_A-i8_x8;o(|%)JNQ3)anmF)|;rwC||)?6&BVoPen!0_iHlTo zph%G(nw=wu)4S+~w5f{kq0CjrwP8d>NdQ-MTDz(~ zwi8ivdNIRVG6kq`JOy)#(xxj)z56P{r|m-8SB%xnk;aE~*L?{4eKd+Qz}lx<)J0fd zl^ab9YpqGVaj62_D*pgLDm*9Y<42cuYo@gtin+ZTaN}2sHE#n$%M1xDdCh5BcT{rL zqBN^lewBNgB8-ZGYSOuO(BoXVnVcKS5gCm0GTCG)M#vUqB6krJXs{08E$>-%P9_fik?JxmC>0 zlxI%bx8Yh^fj0nx!$}-zwun+?K{ErC_EeoB;-X*0p9&nR_Mk=o01AmC_*Xi;<4>eb3+iiHj#bXIpmYO;L4smrRGnyuzX~uWuWzIQ z6({L$#;!$ZKJ^u)d2iW3Xx!^qBU2m0tM?z^K08$RFA^{08YWer=7r| zI-0qm7qvwRpQWOOUyhV$O%uYD^B+UQm(t%(eU*3|sCUt!-CF%SC<1l8PNaQtwnQ$0 zfyjXEEVFP77?H*+D`QV@3%eW`Ni0!GvX(l=lT*T^8vH4M^sw6ECfe5;(jtI5MGdwi zMxxPkL+LebIM$I`e>%N?521qxfvX9%$*JMag@}!4)rD$%sEV2-00j9*D&T53@T17l zu#Wn;iWVL9ZWLmq7!h&*0I_3JGAidv<58#5Zyf60G-wErrilZe(DuD*0rM(EFrtAN*1kZ{xzjqg$_LGVvGsrQNoAg-C5P~vzJ1+ zSTS9UNIQt*U_@4x>8@Rsr5!7kqN9yOR-N^v+O&zIVOrabOj@*>{#9#=(uMpg+HLMH^^o zw{8qQ9K2`}W4iTYW2DhjuLD~5RK@F=;Zj@94b)skX+5=|sr)PaK9O$v(u|H&E4GZ> z@vb!!M68J7Enmv7V^-n_@cMTe2TC`ws0K$6X?35?-NWcD!nk<-Em}v=_fX?%<3opK zMzLH#p~Hx&tgLd3Y>GCa2hL|f8b-IHT2Sx$X;-xich$7zQK>bgPL;~LDs--6pU}aW zsV4RQ6+dd!c8YG=k_`^8+{5kr{{Y*JJHg6M&E>XwwnevTHu@PmMH#W>LTz29y(Gnn ztJLciuZ2dEBvRxf%aD+#f!nXzr=F4Yu(b|UWLIrk)u)^Ks^YKo;5b$J{{ZZApmmzk zFEm7J#;?FwS9Nf$DtLW8KSOR7?L4a{JUQ2@#IYSp0t46+0j>a;y&g3du5(&emFd=n zq;cm^7$gR5?%PBtn4V{VrQ9QE0boUd<62P!*E-W(DBDV~sf+31-%+Jp$m3FVI@e~E zp_BHdFdQkJr$R{VuQU$Y2kk&uYH7o%xI04H8-ebkPyN43-1b)*iLTlLB8O$ZmL2tQ zYnLkTGg?=q*D+dFmEEO&KS|(ta;Y@ua2sv`I`FRQh_}*UX){x5)9q43&Zdte&aKCd zO#LHTVgVsW<{XBTJ@lxgCi5HEz#a7(aX0>SOxBUkjm2~BuI(uH*0rgkO`YT8$K+PgT{jT^^g(YC)s^wMjT(dYHlR4DUAFY*-WkvBTZum)g=yom?G zj9<2hCOc?aBUa;D5+>%fj%JK~_*V)XJ8EY`U9>MTdv;bFPW!R+>ca*;2pH~YwA|dy zd8TW+uU4y?(jvK0BF4G%6?yTkMGgbDyXc?21AS_BtqH4+A5ABncT{}{{9?5+T4`OC z-BJ81!p6AN4irI%6%oRWYhD^wm*H9((@NHf=W2m{Z$jGfrV$&p@TRuqC;(Iuxq*?m z>tlOsL(E#>n?(T^<3el?3g{Q4>GR_1F<~q6nX=^$nX?yS8xjCEC{3#bnKF3MeP7lQIQl64pe(NRpQqZtyo2H@2zI03)5xHY8nX+VLbXE2gEbn5# z5KQ?%5@x^LAMxQ@TC|SJBKJ3n7MeD(tzre}@g23K)|74EOEk9h&*M>Cs?`u}M)4eL zolnrJth5p|76MMOK!E_z?X4?-s{!=Ae=4@TDB3ws5x~%qrFIbn(QVLFk0%m2)#7;l zCN!-pO45fqJ+;718xr&7jU$a|QhX>!5wFtFDhaVNKr~?0xL1uC;iUnrbE|Or9cnIW z!l!5!h^ertw<`V>&a|~6d-(GP#<>e(ZNP5)ro!WmAXV5vA&DgJ?d+?4kI;8i$+oqv z3HsYwG9+@=jdQ5w#;vH}YG!AJYifnHq?7dHN^<0Eg%l!gGqo2*9fG?lRx}o?itMdF z8twW-Rlgsmhv^Z1G-B)9^e_Pt25X0Xc2^24W&n}~z7_qxT$r*tqB}MWi`T4-o~wiPj_3O~ZM*0lPYeKhT@NUc8ArRV?!s^Ui~G;O75FV4HD zeSe)tD&t)1PWrtAA4~C~*xj*~R#w|-3?Po<$LK`F+Jsf>O3?jz5ypXz`X;A>*0!q< zBU=9e3htnP52g6tw3(}j?4f(tby~FXsiC%eYU1@e4kD~8zN3iNxsRad#MFKjJ-jMK zqJS2)WjRrvP>duP+VVWaeqk1h9k;dU+rpa}tD z#8#Ct^tDU@04RYL1BmBW^o}B|DDdv1dJ&~*;ZYIvG(Vjhu#s8;;YUkU*LI&v$8A_t zP-ya&AU6VeQ0=SMpG_#*rAY=L#jJQ&F2SeJlc2eqRmX=K(hXXLaiT`1v7vRuuE9=M zFscvcFb#z=h7J^wxM*PNCbX?9g)kBW*`tUCZ%{eSX*5oTuX>U6@1Z;@)JUx>N{u^f zom=V8vX2U|?yV~I5g$%<5v^Fkr4i*{Oly5;+UMz~()T8#-)rIT2qOZb(11t@wm=eZG?KS);=wKGs zEIaE<(Y=KbFIqvXYxD&8Q~@V|pa#018o2PI-(f~1QQKig_p4sjFmKABi;v-2U$(mk zDx1w-t$y0{nwS;onijtiLI6-S0@NplwX6!Up31y;eK}U3_f~+`f@qkY!&6~KM66hL z^Q{G|O4gw8&{uWGe=iz@Wym0TfFN8 zLE%~o(^}H?FgbxzMxrfT>h*fpyigGayX{gw^h9{qbqT4`q#I~{n$fjLAVo+rJL^vR zA}V6st4K8;%D7gV)`TAFu-8LGLGGvnN(MM-M1ieoY8I<3cAE5>K3ywHnD3vVwZDaF zR$Eu6TJ+TIG-Sn3xIAjjrx8T^gK+%3YeQBQrD+voH8pWGc=Dk!ZWL`?qJ_Jt8&4|I zmDU3z1_a*V$h8t~Ns@Hdk2)irNvO4`+O_=mR|liN_@J8C8g?5ngB z*-$d5JS|pbZyNNExT~b8wv<4}1DsTxW^}6qtVA00nj>z%NDvJ~>%xewJZkG+kzShg zf!r%fxT6EUXmFZ{sH0=80!f}!X7$-o6eLIoO57F?82U^B^cKG#rRZ9w1e(&XWAu|o z)5f&=TVJM=&ZZ!8tu>%v-lzE0jp&C^(hk$W9(LneffPSi!mpfn6Ibd~a@YA$+tu#m z8fb0mkVgV-Q|{s`%o(k$>Un@Bp^DEaqbLaMG+~JB)`%HAD#Q^)6q*u-0Ix}-V@A>0 zMoAsD09aS~P*A0bybI~wQ2=(2!nLh!^cL@L5s+vw~a`=>t2v*Vh1Be2YnGH+$7Y= z?UP*Qf!3f3)YR)i@w;PjK6Nl|BU*^J0ondkWJ&C;C|ZrX=-a;4rA_F?g;-v_Gf)7N z!eWi6+H2A)NT6@6bNVS0B1P-E)un0w0I*0G9v9_3wf_M7FUS7?;Oam9I)Pr9qvfI^ zw5y0U>8mYWYZGQFP8>;x94fDo1T4T3drj*~^aI;onDDE9B7_*Dx=mWcl~~q-+E#2P+6h%j{e6Bmfng=tqB)E+f$cvg}>odXfsNBk zVP2ZGhap;sscHf%O)Ej(D)ZS~dn&+piteo@YtjuHN7G8Uw{=}deR^xt#;z+*!nL77 z$4ao{M%AZvMwR^PZ-1o0@A?C`TJ+nptRVMRhrj7DZgeI#@EmKESpBF)?|L(@BUZ0f zS#B%SYPyPuts;3<#GZA`4ircc+G|h3y)#~qwR&QBRmB-uoee+`IMuZ6t4&1Sg{G_{ zl?}tvI98Uci&d8VO=$+Su2rP=)KqI%6`|6uD8Y`(wP{AxF;*3(wWUE8qifK$3sJGI zLXD*Httukg)yErAwP`)HZGIJ{%^PWI)Yg+%8dPnqCcQDrwEQXpf=>#vSE9WY=_^wc zTqJOc(z#HnKWgNAt6##Ve+n_%Uc-$v3GlB-uT0H)Z`oH^pf=k| zowex$!o4*S9BBDXL9|x2Ymr=gD?vxHv>o-OsM;pIGe^r|QMPMHttgGAj^Y0RELN81 zPnB_#j}ryR{{YfkKzrzjisMrsjcHm}q>8w|(tni;R)(wyjZIqq6{MQWG`_)+em_cTDRRixIJtt-+y>R{12(YBRusN-5t zGaSd#z?$V(t`+<*6{Q|^t!r9VmHeW;F;-f*tt&}A)##pfqi+bJ0{#{0qi@2Z58A9N zN${^sbG1wmJE(S6m8XRpU%IrYkHVq^jV(k+;a-mGQ5$2jwEQYS7vop{6)+85M`cFZ z&|0+bFl%R*^!zHKC~6;y$JpX0)$OSXG6%Rp{7KfG$V?0VK|V0ja1Ut8yar zIUY3;S{gD8ajyOMiUYm&|w z8SbojdQY0o@;xf3{{Z`6%PRGlj~g@oqR%kZhob%S&}99g@(%<508+vqKgY2;ZWqgn zd62`lu>7CKby$8+VB8X)nwT2LFT2_^%`>Xjye}#XIO>?aUXa{`}v|qA>ES?Z5!USni26)lo zM?+qb*;WzZRu!k=T16Xu==o-}?xG{@T2K*wLbj?i7?@Ee1>{U7gt+r3Xk)Jf_3l=(iFYey-_58PKzi2maEe|M{G zy(TsJ9+bXT;4zPL%{`UX{8!HZ0Mws@=)Ozi-Lduk5@mj)CMQGYLNKF^!;rmx=l#F? zANH^IJs(#2IvA!w;oo`Mu42zHCx@>)E z2EeZTptjQ&6It>6x4`@-&*$6!0Mm6RrpwVXnFr1=IaU!PL9FnK=`sG~{k8L-wmO`i zUb8k7Pmt+x5IsuBQ!6b00H$fW-`YRBz9;8#V_$Qq#fPax&xImM&4(#mi5z5CTl+Kq zmL7-YzC)zON6Y^5$r-wAIdp725+5cLDh8qRxltz9_O~k{3{7h+aJ1e48QMg!PDdRh~Q@_-8#|_ z+F!7~OXRw|gp7~#In$%*@s0$0KI6GPkzXN~_qXkypC`l~k16=xhu~C>pml+i+ z;|hGCaRa&gS;;iHb7vSxy5cf+^OM82m#R5&br^<3ITsTR*R_WsThCO?z=Qq1AuM?S z0RD8Pemgc$)6}g{{R8k1t>b+gQ$L=Cf11s@s%)Q<3n8t z{pO`W(;aOsFpem2qQVwf;Z$&+jgW=W+h;g!rzj zr^unPXJO^R)Zlo_iO3K^5DlvyPMfdk`i0GmWyIL>qXx!i7+*sMquXgKxF`m8{{U2L z9kfo;V)nm{xKvo)2Y&(ML@p*`H33OAm#+D*k?B4wrNX81Wa{(c!vS@Hk<^ko3hH`p zqxarF++Qbya6cRHJw8sk%dPet$`=Tpd!n8GEB2S~51Gn^Mm27qrs-9|fY*G@5IZkQ z-7ozu{n4Kxk&tBSdNcsdt_yz(88QC=(y!e)GcWs?&r{JV0nJ=o{i_%Lr~d#?zjFL} zY^=H09$uF?TruTwbp^Lri0uZjFUWPjH~V*~&DAakPP?Ed9z11={{V2=F*6OSpfM35 zV!ghH{-^wZ$LB4vaD2Wzy$Lb{Zw--lz|h{tvh;rw{{T{dYy6K@i)hJ%2g-EYfny2= z_fTZ=uYab=kE+09^{_hSOX=o9Mf>Y%Q@Ues8RZ=6G&YIt(zGHu)|D}*IyS!wCzhj? zA1`>O3yq&>mf8u9_^zw}0K30;{73D~ofb9C)pVV2Qj66De@PuMCn?>+7WI?kKj}a1 z{2wuc50L)p`P9g`@-XAm^k~Z4M?8df3Qvyf{$m&IpMeMlZ-V{2AEU*c;u*S(yPGaR zb=$jWc*ygWp-P z;9{?tyvJ!I&EZT$P(IE?$E)UeRbKFTQ%_NjR7-irl&Yoj;)A`^NF24+zfa@xKoh-~ z39tU2q+DSjvt$LN9_vo$7>)KLjy!$3eFK-Pm}$k-Dioy;-pb{q=Km4i(AGUv+K zyuR7UVD2~airz3TFwm%&#IfWrG~+K!dNffe=D?ZINTv3%oShr(8_>?t#F)~uu3Sm% zV?UwQp|kQFZ`(sAOi1|$rPxUXb2Y>5TIr<|B;QW@!`5_NMsAC%z~d)R)%5Pz@}sGh zVCq8x4aMsp%KT67Uz6#+LmMkDbC~2OX6OtaLk}^KY-_9PaevhBm-o8Nqc&G(4Yh`0 z)OiF#gOcP69U?2K{lK5Rl{0m@apvm&Fm%cNi#{dUxM0zD4MLbT)caq!elwv?smm&1 z_}mkS6)MS%nn+VK-&i_a-}P7L0(9+_@a4mpV97b7cxT3{TT4!yD<@O(pDEOQpH-hJ z%a^F@GQUvl#K|P(X1O|=+L&>pL@8N;d5EGm;+_q+NvuHSD%jh3bg^PInr+!i<8M+e ztvu)`bCFcW6>>=zm>q_bBlLM1NI21&ZZF4$0o3#=*~OP9=3&Z3K1}}r7^4nb;>IFZ zZOH_2?xy)a*q^(8XZEgq(7Ds5>X_lkf?z%tEUmXuBGvJIFUfqj$A0VSJ~PXd{HI2T zsOs^_J9>_xHnR{20ksjvuw(tv{{T%NsmR?{5!Gb)?yXcON$o1;IMu=3k+OozHrisk zBk~_R*Z$S(daR9$KS%O?BW=XWrPYpHd(@-)cSV}Uy1tM0x9|S|i0b;znBw;OUZbc^ zlP-13jARds9&&|%ouq0Q8&t;N1C_G6 z=4W6r!kP1M(z=h^zw}&m-!azXES+EP-nSTjlOEHwuS3&09`yeJ^BxzHn#b_6py4kM9bD>Wm_t#jeDY>sOvH|6;tKL_jd57 z$J1kcs2j+jNim@`3abo=On@MR+e0oaj>3KA#d(G^*KYhZ&KuYl^PwhZyJ2r_jJjIH#t&fe<)sbb0#s>V^j?2?X>A2z>(ow zF(_EZ!xko3QfJ3b+8qvHaU!(){{ZRTVhtSyY_eM*zpt0tuPtPBA<6y<0J4 z0ZT45JP#P8>bj1f9$dKBY~5G`!pHegJwi4-eJL3*F6efCHX4q~b?A@w*cG;B>K|4d zkWuNebp!icXfb3=c4-6p$MCFJaV#bwwE;XTXK^AU zYBDHtzm#ZCD^VuRLO?(2tzx7J0@MkRX5)aP8Vx%uSv=?fRR)ENTKY{UC+jdH=tcqBx zK!7AzQS}M@pvAdR-i(2+k`2dwK#1c|7j#=~8MNv&sMnodWsb9@Wo(%h*BFhS;Ko?N zHZj>X<_c4Va3mv4*W5&4OVyhv@?sscEBGv9=$jc^K z0f8OnYxEIRt}v+lKr&!=QZr&wF_sy33y^FH747uchVTT5i6f2s>-(OeQ)&^pCV29p zi=^q@z;?+Pfq+lto)Jrv6b6M z#hzK&xE=!an5Jwmfo1Wia0^BB=TDGz89FTN$I3u_c@ztXu>^P5Pu4C|kEmRB#kXlC zxSnz=2xQsQ;c>VDa|e}sYVvQjPXM}_>RTBZGGGC-;l>8y+8O5*>^ddGnWNjxttQ&c zT7sEeIPcUL)_p4-v@)f1Mn;dWX-H`VL3|M;Hrh*SVe73K`l7 z5@1X(IwPg`GH1%9e@?)EG3^{H{{S(Q@ups{Bj8daA5(;xM&Y<}=Sthtsl?_}HWu6u zc+?sM{p-fBeh@n-UT5;26>~H%0y)>}v9ZQ+^bZ`asW-iw+M>IjZk}sBJIj} zDAjyxIda$&&^l!^Vb6tR>XrsPYz9JY1n?BNvh=BqG4$>3LzUdah>kSbzB{YMpQqLs zkjj6hpjgv%`TV(3Bm*!w8KPAgfb}pF9rd|SmU-7@ZNZ(fDQ(Q7LVwlFQ1?hA64Dd` zN!IkfV+tSx{HqFe>F;!|cIAn%JbBu);P|YgH${#dDmZ3?sPjSZpb88pACx4+6WPv{ z)ypVY3zTk1?lYw#byz>Q%t+nTB7+0MD;Y<})L~ttb|_NU^-uAv{YO+-p*vX}Zms^3 zbse-@7;%mU-PYYaVvY5@a-t8U@imP|I|%@wHsv6i7@r|b&t&&6sjviEu;zw#4xv?A z0Xkl?G3ywkuju1tQc%vIh?u3tkr}aIDA_V7fczqK2gZ?cV#CvhA$_fcG|q*aa5RH1 zS04Lq!nlYG#&-*H9B)h2btB#A5UMv$t+c%JF=;i>U{Q~t#vgKFL%67jD%wusMF;8r zP?^ZhlW>?0*HH$*5l_{(UNU1Ye@H1Lu^S{4Ugl1-Hhh=e(ha3a1_h3!RzUmlt)4xC^%APaZLWjdUJGbs!K<2*boVy-awe1-7LHtU^hA4`iK z91okyb2J8EKdIyRRxXDQL7O9hT>4Q#nLWa=bloc>^;z-}xxodF*^ztgterl7s0T|H z#x{nYBGfvJT|;MfL5QYNxR5SlVg%6NyCPx92Q2N!i*pE*psua*^&~e*xlY9+2@7)5 zs}4X{{{XZb?9>hnS##kaeyIY)>mXIj;{kU;5Z&ULw|=R)JTFIhAdL+R>)8}U4s%3} zE6fZFSkZ-$r5pxE3_HQK z2F-xu$`~A-PfW)XKm5upXl28fsmYa~IL{1ED~iLPdAxZ64ZU?BipiN$6_1g&1wJ5J zg0JQ=2EV9(rswP^!O&K*K+c+X&>d3bOoGjsAgJxyVwa-o6<<1ynEJ-@q2+KS9}3CR zwskmElB71}r1lv%I)+@QA_P7f&xH)R6W!X-Ml&Q&Fev-mfKUNf^oY{bMnonf*&=*F zHU8NLh$H+bTH3&=8ioX4l?{BRZKV~@h-6Lz0E5ng97~55S@-fVB#8c-@vIKbkmABv zV8&jv^q4jrYtx26=^!wkCy6u&oP`r^ zAomJQyC~r5FlHFDoRiccmy&G^ee5xKN+}w0F zr^Hpz0zIj)7 znDZx)98G8V+z75RWZRn|^bMvVN8>fu^!fUe)GPpmPQuA=CuA6}_WuAM@}Svr4}Tfm z89Y%80Uy7#doo^ZwkqfW61b`118XRfHayJ5zcu~*+396 z@&-<|h4J-x^82T2VgT+>`S?Wz&6!3v10!I_#bg6w#E2AJ;l>Fb)3*KB8ZhJ8S(~KI zh=QXoE}IiDQ?*3y1PQNk`t#H}g)Bh;Az>v{3kapgyZW5)Mm5H=PZOtwL1vyE zu}cON>D$hYgvfz41$CGLk5ANe;qu7Y)PW8F=6KO)+8Dqj-|i?GiO|=uAAT_`5rDMv zAXkN`TTfBb@TCZ6bP^iCPdeTh6Cf}KNbszqCPu`lrGzMA$Aa*)X*>l3(0rfw*qs%< z&u1nA2@=Rv$(^Rs3>roy(xi7SsfuQZEF4;8WXdUzhTtz~dSC2P@UXC@% zgx~;1EZFRO+VmChVi;AyKGd$@ImA<*gAgYu+Hh_rMuImPnkT4N#OOBMaMN#f4^qX+ z(&E3kAZ2LU#qL1t?WWH7@;6D8lHp7?WDIX zO$=|*fwUD?!0xjHh|t9|FG23*VmG_*Am37_%U@M%y09Y{Zu^2L z2{53?ZALA{xB3n5JUyJ@8v|SZPa&~hBtjr0Y!l$lp2tw%L|^$U9e6wVa_-jV*v|r96PBC zByU~Hqs>2RD&iaqp|R7pi6#Ix<^>PUIw&G<*lTfH5g?mKeJ%9RbEuttNn3ac+Br=K ziQ-KtJby5uF&(1y3c}irD$w@Z6BeU^fXR*6Hbslb+x$y}h-u zP-e!C3iS~VCxNC_b%GAoX7<4&gqsuDK@Uss0H=G)c}UiF@}%~_B- zvB?K)k_n@xP3#*c@i$vU@`?cfl>~wQ6grg*cC;gn6zSS2moZ$MuBF7XollqnN~8d* zaRd3(snGcV)_eOYJyRZaB$+d428Z_<&KyTvyLZ7lSQ=J2&Ph^s?Sdf0Us`2kmL*0q z-k}<)9kk@)Qnn#Au+$3o@buW33Kd*A2IX1M--xV`7H0M}U^YN^%*@_&-UuuENOIu1M+_Nz<%zS3BK1AHPe8@En2RNbqjsep2;~FO1OSPnW z#{U3TylCVlZD1NtmzQbppv?_vyzSQTDbY{0iIG?PWHF8uK(PKa#MwZFUN+-2X2g%U zrVyB2A`Yp!9K&_wx+U+CwR-j~vb?)O=GE78Qps5lA z#f?iOO577_Tc2zLE5y)zRwIA{i*n)qRAt>sm}&I)QewyzwvgWG196QY>qHm_L%_+> zvE`1LI;TpQ-7xV~tEm@3-SyfbjnS8W$tBwV2X{&CLlryC_;F-Sj~QK-2J{v=}1u zdErZsko!b*30QsO#3fn0&0$*aE8jht)Vj-X*1k76eriM84BL0}tCtWKU$kN!9 zAg~r*ajjWK&LF5F{N|T!;6&&RNV^>cNU#lFQWcLOB7}i%b!H?E2BDfISc?;<4$9Pk zZwI!7vkPVH)Z!N8ILy$ppxW?d$kTJtg4JSK@|ZK@+@1LH$a@~k;RY;rc{7+4qF zBnH~n)0GczsB%|Q;tB4c=Opda8|r&0oRUE|Rn*Y^C)zYIc&0lBOpZWxOi^%);Ohw0iGv#vckjt^To)n+`OOygJ@6--3YZGPaNK_1n;BakZaiu~= zKCM(2$cyc zqL|3@YhI!DHMvMUhh-IE1*Qn)G|X?f005|H1Zb0S{xyBXi+}}gQM9nQI*;X2uzO

Q5e9;f>JV&F3`cck4b&WmC<&2{rZm50 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Ị7l5TU&i&qvHOQ|;Wsg3-AK6dCb9wG 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/tim_80x80.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png deleted file mode 100644 index 74389d8ca08257a23e73da530529831d900cf00a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4178 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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/vue-logo.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/index.html b/vue-light-bootstrap-dashboard-master/public/index.html deleted file mode 100644 index 76f3145..0000000 --- a/vue-light-bootstrap-dashboard-master/public/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - Light Bootstrap Dashboard Vue - - - - - - - - -

- - - diff --git a/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/index.html:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/manifest.json b/vue-light-bootstrap-dashboard-master/public/manifest.json deleted file mode 100644 index f608d2c..0000000 --- a/vue-light-bootstrap-dashboard-master/public/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "vue-light-bootstrap-dashboard", - "short_name": "vue-light-bootstrap-dashboard", - "icons": [ - { - "src": "./img/icons/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "./img/icons/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "start_url": "./index.html", - "display": "standalone", - "background_color": "#000000", - "theme_color": "#4DBA87" -} diff --git a/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/manifest.json:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/robots.txt b/vue-light-bootstrap-dashboard-master/public/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/vue-light-bootstrap-dashboard-master/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/robots.txt:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue b/vue-light-bootstrap-dashboard-master/src/App.vue deleted file mode 100644 index ff97524..0000000 --- a/vue-light-bootstrap-dashboard-master/src/App.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css deleted file mode 100644 index 5ad0114..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css +++ /dev/null @@ -1,828 +0,0 @@ -.tim-row { - margin-bottom: 20px; -} - -.tim-white-buttons { - background-color: #777777; -} - -.typography-line { - padding-left: 15%; - margin-bottom: 35px; - position: relative; - display: block; - width: 100%; -} - -.typography-line span { - bottom: 10px; - color: #9A9A9A; - display: block; - font-weight: 400; - font-size: 14px; - line-height: 13px; - left: 5px; - position: absolute; - width: 260px; - text-transform: none; -} - -.tim-row { - padding-top: 60px; -} - -.tim-row h3 { - margin-top: 0; -} - -#navbar-full .navbar { - border-radius: 0 !important; - margin-bottom: 15px; - z-index: 2; -} - -#map { - position: relative; - width: 100%; - height: 100%; -} - -.fixed-plugin li>a, -.fixed-plugin .badge { - transition: all .34s; - -webkit-transition: all .34s; - -moz-transition: all .34s; -} - -.fixed-plugin { - position: fixed; - top: 200px; - right: 0; - width: 64px; - background: rgba(0, 0, 0, .3); - z-index: 1031; - border-radius: 8px 0 0 8px; - text-align: center; -} - -.fixed-plugin .fa-cog { - color: #FFFFFF; - padding: 10px; - border-radius: 0 0 6px 6px; - width: auto; -} - -.fixed-plugin .dropdown-menu { - right: 80px; - left: auto; - width: 290px; - border-radius: 0.1875rem; - padding: 0 10px; -} - -.fixed-plugin .dropdown-menu:after, -.fixed-plugin .dropdown-menu:before { - right: 10px; - margin-left: auto; - left: auto; -} - -.fixed-plugin .fa-circle-thin { - color: #FFFFFF; -} - -.fixed-plugin .active .fa-circle-thin { - color: #00bbff; -} - -.fixed-plugin .dropdown-menu>.active>a, -.fixed-plugin .dropdown-menu>.active>a:hover, -.fixed-plugin .dropdown-menu>.active>a:focus { - color: #777777; - text-align: center; -} - -.fixed-plugin img { - border-radius: 0; - width: 100%; - height: 100px; - margin: 0 auto; -} - -.fixed-plugin .dropdown-menu li>a:hover, -.fixed-plugin .dropdown-menu li>a:focus { - box-shadow: none; -} - -.fixed-plugin .badge { - border: 3px solid #FFFFFF; - border-radius: 50%; - cursor: pointer; - display: inline-block; - height: 23px; - margin-right: 5px; - position: relative; - width: 23px; -} - -.fixed-plugin .badge.active, -.fixed-plugin .badge:hover { - border-color: #00bbff; -} - -.fixed-plugin .badge-black { - background-color: #777; -} - -.fixed-plugin .badge-azure { - background-color: #2CA8FF; -} - -.fixed-plugin .badge-green { - background-color: #18ce0f; -} - -.fixed-plugin .badge-orange { - background-color: #f96332; -} - -.fixed-plugin .badge-yellow { - background-color: #FFB236; -} - -.fixed-plugin .badge-red { - background-color: #FF3636; -} - -.fixed-plugin .badge-purple { - background-color: #9368E9; -} - -.fixed-plugin h5 { - font-size: 14px; - margin: 10px; -} - -.fixed-plugin .dropdown-menu li { - display: block; - padding: 18px 2px; - width: 25%; - float: left; -} - -.fixed-plugin li.adjustments-line, -.fixed-plugin li.header-title, -.fixed-plugin li.button-container { - width: 100%; - height: 50px; - min-height: inherit; -} - -.fixed-plugin li.button-container { - height: auto; -} - -.fixed-plugin li.button-container div { - margin-bottom: 5px; -} - -.fixed-plugin #sharrreTitle { - text-align: center; - padding: 10px 0; - height: 50px; -} - -.fixed-plugin li.header-title { - height: 30px; - line-height: 25px; - font-size: 12px; - font-weight: 600; - text-transform: uppercase; -} - -.fixed-plugin .adjustments-line p { - float: left; - display: inline-block; - margin-bottom: 0; - font-size: 1em; - color: #3C4858; -} - -.fixed-plugin .adjustments-line a .badge-colors { - position: relative; - top: -2px; -} - -.fixed-plugin .adjustments-line .togglebutton { - float: right; -} - -.fixed-plugin .adjustments-line .togglebutton .toggle { - margin-right: 0; -} - -.fixed-plugin .dropdown-menu>li.adjustments-line>a { - padding-right: 0; - padding-left: 0; - /*border-bottom: 1px solid #ddd;*/ - border-radius: 0; - margin: 0; -} - -.fixed-plugin .dropdown-menu>li>a.img-holder { - font-size: 16px; - text-align: center; - border-radius: 10px; - background-color: #FFF; - border: 3px solid #FFF; - padding-left: 0; - padding-right: 0; - opacity: 1; - cursor: pointer; - display: block; - max-height: 100px; - overflow: hidden; - padding: 0; -} - -.fixed-plugin .dropdown-menu>li>a.switch-trigger:hover, -.fixed-plugin .dropdown-menu>li>a.switch-trigger:focus { - background-color: transparent; -} - -.fixed-plugin .dropdown-menu>li:hover>a.img-holder, -.fixed-plugin .dropdown-menu>li:focus>a.img-holder { - border-color: rgba(0, 187, 255, 0.53); - ; -} - -.fixed-plugin .dropdown-menu>.active>a.img-holder, -.fixed-plugin .dropdown-menu>.active>a.img-holder { - border-color: #00bbff; - background-color: #FFFFFF; -} - -.fixed-plugin .dropdown-menu>li>a img { - margin-top: auto; -} - -.fixed-plugin .btn-social { - width: 50%; - display: block; - width: 48%; - float: left; - font-weight: 600; -} - -.fixed-plugin .btn-social i { - margin-right: 5px; -} - -.fixed-plugin .btn-social:first-child { - margin-right: 2%; -} - -.fixed-plugin .adjustments-line a:hover, -.fixed-plugin .adjustments-line a:focus, -.fixed-plugin .adjustments-line a { - color: transparent; -} - -.fixed-plugin .dropdown .dropdown-menu { - -webkit-transform: translateY(-15%); - -moz-transform: translateY(-15%); - -o-transform: translateY(-15%); - -ms-transform: translateY(-15%); - transform: translateY(-15%); - top: 27px; - opacity: 0; - transform-origin: 0 0; -} - -.fixed-plugin .dropdown.show .dropdown-menu { - opacity: 1; - -webkit-transform: translateY(-13%); - -moz-transform: translateY(-13%); - -o-transform: translateY(-13%); - -ms-transform: translateY(-13%); - transform: translateY(-13%); - transform-origin: 0 0; -} - -.fixed-plugin .dropdown-menu:before, -.fixed-plugin .dropdown-menu:after { - content: ""; - display: inline-block; - position: absolute; - top: 65px; - width: 16px; - transform: translateY(-50%); - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); -} - -.fixed-plugin .dropdown-menu:before { - border-bottom: 16px solid rgba(0, 0, 0, 0); - border-left: 16px solid rgba(0, 0, 0, 0.2); - border-top: 16px solid rgba(0, 0, 0, 0); - right: -16px; -} - -.fixed-plugin .dropdown-menu:after { - border-bottom: 16px solid rgba(0, 0, 0, 0); - border-left: 16px solid #fff; - border-top: 16px solid rgba(0, 0, 0, 0); - right: -15px; -} - -.wrapper-full-page~.fixed-plugin .dropdown.open .dropdown-menu { - -webkit-transform: translateY(-17%); - -moz-transform: translateY(-17%); - -o-transform: translateY(-17%); - -ms-transform: translateY(-17%); - transform: translateY(-17%); -} - -.wrapper-full-page~.fixed-plugin .dropdown .dropdown-menu { - -webkit-transform: translateY(-19%); - -moz-transform: translateY(-19%); - -o-transform: translateY(-19%); - -ms-transform: translateY(-19%); - transform: translateY(-19%); -} - -.places-buttons .btn { - margin-bottom: 30px; -} - -.map-container { - width: 100%; - height: 100vh; - max-height: 100vh; -} - -#menu-dropdown .navbar { - border-radius: 3px; -} - -#pagination-row .pagination-container { - height: 100%; - max-height: 100%; - display: flex; - align-items: center; -} - -.all-icons .font-icon-detail { - text-align: center; - padding: 45px 0px 30px; - border: 1px solid #e5e5e5; - border-radius: 0.1875rem; - margin: 15px 0; - min-height: 168px; -} - -.all-icons [class*="now-ui-icons"] { - font-size: 32px; -} - -.all-icons .font-icon-detail p { - margin: 25px auto 0; - width: 100%; - text-align: center; - display: block; - color: #B8B8B8; - padding: 0 10px; - font-size: 0.7142em; -} - -#icons-row i.now-ui-icons { - font-size: 30px; -} - -.space { - height: 130px; - display: block; -} - -.space-110 { - height: 110px; - display: block; -} - -.space-50 { - height: 50px; - display: block; -} - -.space-70 { - height: 70px; - display: block; -} - -.navigation-example .img-src { - background-attachment: scroll; -} - -.navigation-example { - background-position: center center; - background-size: cover; - margin-top: 0; - min-height: 740px; -} - -#notifications { - background-color: #FFFFFF; - display: block; - width: 100%; - position: relative; -} - -.tim-note { - text-transform: capitalize; -} - -#buttons .btn, -#javascriptComponents .btn { - margin: 0 0px 10px; -} - -.space-100 { - height: 100px; - display: block; - width: 100%; -} - -.be-social { - padding-bottom: 20px; - /* border-bottom: 1px solid #aaa; */ - margin: 0 auto 40px; -} - -.txt-white { - color: #FFFFFF; -} - -.txt-gray { - color: #ddd !important; -} - -.parallax { - width: 100%; - height: 570px; - display: block; - background-attachment: fixed; - background-repeat: no-repeat; - background-size: cover; - background-position: center center; -} - -.logo-container .logo { - overflow: hidden; - border-radius: 50%; - border: 1px solid #333333; - width: 50px; - float: left; -} - -.logo-container .brand { - font-size: 16px; - color: #FFFFFF; - line-height: 18px; - float: left; - margin-left: 10px; - margin-top: 7px; - width: 70px; - height: 40px; - text-align: left; -} - -.logo-container .brand-material { - font-size: 18px; - margin-top: 15px; - height: 25px; - width: auto; -} - -.logo-container .logo img { - width: 100%; -} - -.navbar-small .logo-container .brand { - color: #333333; -} - -.fixed-section { - top: 90px; - max-height: 80vh; - overflow: scroll; - position: sticky; -} - -.fixed-section ul { - padding: 0; -} - -.fixed-section ul li { - list-style: none; -} - -.fixed-section li a { - font-size: 14px; - padding: 2px; - display: block; - color: #666666; -} - -.fixed-section li a.active { - color: #00bbff; -} - -.fixed-section.float { - position: fixed; - top: 100px; - width: 200px; - margin-top: 0; -} - -.parallax .parallax-image { - width: 100%; - overflow: hidden; - position: absolute; -} - -.parallax .parallax-image img { - width: 100%; -} - -@media (max-width: 768px) { - .parallax .parallax-image { - width: 100%; - height: 640px; - overflow: hidden; - } - .parallax .parallax-image img { - height: 100%; - width: auto; - } -} - -/*.separator{ - content: "Separator"; - color: #FFFFFF; - display: block; - width: 100%; - padding: 20px; -} -.separator-line{ - background-color: #EEE; - height: 1px; - width: 100%; - display: block; -} -.separator.separator-gray{ - background-color: #EEEEEE; -}*/ - -.social-buttons-demo .btn { - margin-right: 5px; - margin-bottom: 7px; -} - -.img-container { - width: 100%; - overflow: hidden; -} - -.img-container img { - width: 100%; -} - -.lightbox img { - width: 100%; -} - -.lightbox .modal-content { - overflow: hidden; -} - -.lightbox .modal-body { - padding: 0; -} - -@media screen and (min-width: 991px) { - .lightbox .modal-dialog { - width: 960px; - } -} - -@media (max-width: 991px) { - .fixed-section.affix { - position: relative; - margin-bottom: 100px; - } -} - -@media (max-width: 768px) { - .btn, - .btn-morphing { - margin-bottom: 10px; - } - .parallax .motto { - top: 170px; - margin-top: 0; - font-size: 60px; - width: 270px; - } -} - -/* Loading dots */ - -/* transitions */ - -.presentation .front, -.presentation .front:after, -.presentation .front .btn, -.logo-container .logo, -.logo-container .brand { - -webkit-transition: all .2s; - -moz-transition: all .2s; - -o-transition: all .2s; - transition: all .2s; -} - -#images h4 { - margin-bottom: 30px; -} - -#javascriptComponents { - padding-bottom: 0; -} - -/* layer animation */ - -.layers-container { - display: block; - margin-top: 50px; - position: relative; -} - -.layers-container img { - position: absolute; - width: 100%; - height: auto; - top: 0; - left: 0; - text-align: center; -} - -.animate { - transition: 1.5s ease-in-out; - -moz-transition: 1.5s ease-in-out; - -webkit-transition: 1.5s ease-in-out; -} - -.navbar-default.navbar-small .logo-container .brand { - color: #333333; -} - -.navbar-transparent.navbar-small .logo-container .brand { - color: #FFFFFF; -} - -.navbar-default.navbar-small .logo-container .brand { - color: #333333; -} - -.sharing-area { - margin-top: 80px; -} - -.sharing-area .btn { - margin: 15px 4px 0; -} - -.section-thin, -.section-notifications { - padding: 0; -} - -.section-navbars { - padding-top: 0; -} - -#navbar .navbar { - margin-bottom: 20px; -} - -#navbar .navbar-toggler, -#menu-dropdown .navbar-toggler { - pointer-events: none; -} - -.section-tabs { - background: #EEEEEE; -} - -.section-pagination { - padding-bottom: 0; -} - -.section-download { - padding-top: 130px; -} - -.section-download .description { - margin-bottom: 60px; -} - -.section-download h4 { - margin-bottom: 25px; -} - -.section-examples a { - text-decoration: none; -} - -.section-examples a+a { - margin-top: 30px; -} - -.section-examples h5 { - margin-top: 30px; -} - -.components-page .wrapper>.header, -.tutorial-page .wrapper>.header { - height: 500px; - padding-top: 128px; - background-size: cover; - background-position: center center; -} - -.components-page .title, -.tutorial-page .title { - color: #FFFFFF; -} - -.brand .h1-seo { - font-size: 2.8em; - text-transform: uppercase; - font-weight: 300; -} - -.brand .n-logo { - max-width: 100px; - margin-bottom: 40px; -} - -.invision-logo { - max-width: 70px; - top: -2px; - position: relative; -} - -.creative-tim-logo { - max-width: 140px; - top: -2px; - position: relative; -} - -.section-javascript .title { - margin-bottom: 0; -} - -.navbar .switch-background { - display: block; -} - -.navbar-transparent .switch-background { - display: none; -} - -.section-signup .col .btn { - margin-top: 30px; -} - -#buttons-row .btn { - margin-bottom: 10px; -} - -.section-navbars .navbar-collapse { - display: none; -} - -.section-basic { - padding-top: 0; -} - -.section-images { - padding-bottom: 0; -} - -.documentation .dropdown .dropdown-menu { - transform: translate3d(0, 0, 0) !important; -} - -.documentation .dropdown .dropdown-menu.show { - transform: translate3d(0, 39px, 0) !important; -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot deleted file mode 100644 index cd4c781087e5b9057fdcc0eb885355e218214c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27560 zcmeIbdyrh$c^`PsxsP+-_jdQ~_j9`E(KDEy>3Q_b;5{TkVE7OTkst*=L}Gv$03!}C zqnQB(N>ohSk_wU)g>jfIYU5S3+KP-gt`s+MHps5yWp=$TZc52=RfR~|v_ zIUHYCmX$5kWR%BIvxTE;@~oONrA#Po9Qli`gTr(aj`EVCD(z#BK6ZEQSB5@~$_3P( zc=*xD>A4g4Jd6D=WB>6p7nV1*J^wyX6!o&A7~ea${=(Vo|Kz9Vaehg;F z?06aHejjD-JSw=!PGS4EQ3lUn*txud4P5UBD6gzDE0|de(S>W^V+}Pgv7bkx@qbRHYUQx84(7nfPNbm3cj2XRM z?Dbx&vId8L|N1u`dNw%l=ZX`5{qYs`?{PpFXi%LP!b{*fn&DPh>E#vy}HyO^OqYO1nF>coW2lld} zWA7WvKg4^Z_xWku#ofDQ3de4H9Y1^Tin7>c-4*$C+4vcEw+7Yx|K?$czU? z5h$UOP?AbYiIg
3Am4>>I=C8exXl&Vrw29!EvZBQ9fhLsVesf;RP${zfF3o2w1 zGCrkDD>KTh(oyD=d1XP_tL#$_DEpOzkp9EUqH-6c^B(1ha<6h!Ii@Tr_bK-)4=4{R zA5k7s9#)PkABDPlR5_tM1|{_|<)re2@}%;V^0e}CR7g*CAw5(`in@>kDkKkGNEQ{6ur6AZ3h9`xhzn#y=|U4x zA&u0v;sUu*x{x?3BzavYE|4Xqi@Tyi`mpQ81@fhI{kTBVlrAg-708^@4dVjoQ@V+` zKn|5|GA@uvrJITiWK-!zae?auSz!)7f7zs&Bg^XtaM=^s6d*PZayxMYo%L= z3nX0W7UKe0SGuLRK%6;!RS!B198DPQM&cGV8kfh zMqDs-G%gr-N_Q+S7=cQ6Ph2n- zmF{?4NLzGUal!ahx)X81NL9L%alx2Xx-k7z$OY(5#RcP7=}yN5BUWqFP`dl#0u7;b_s0dgLh1Gjw1(0> z7#HXdrF$qY&?HLta9p5MlYd_wKlmJ?!2S7w8_Pdn7KUJx;sPC|beG}+ZKZVYiwpFY(!D<}&|pgUfw(}IDcuL-0LYf zT%hTc?!$3`&QrR_;{xrcbUzvw=s~6XNL-*1mF}Z)fo@c~C*lGvsdOKU3-qPZeLODE zoJ#j&ae)q1x+miTZK`yihzs6(6CDPsklJbD&42!0s{_nQ`_T?Az=H|1|$2HK+cb z_H+Fu!#93YOp9m4Z;S7lTjsZ{hpgYT@3v3dFWTR67M*qHJMOf5%Kaa_iuXHy&7bvu z9y}6!FI)-VNPHpjqvVsxUrPRN>S*eBqkYjoPiyJlO#dkJtC{QBrR=wIr*nTlZ|A>P zSSVa6zEpao^k(@;C0BX9dVlqmYPYsn`_8~u2EJY2Y@BMm(fFgr4+rhRFAV&>IhuZ$K(e>OHdc5TneJ>MU{pL8W&Zz(^6HX4Q`FQHeSq!ya@ znJ}^yR%J8uhuHkw?8xxQ1QR~XW{e39Rfky{hqIX|9icX0^}}p#coG#N-N2diht%n8 z24~jj6??HSZ;HM9a9e z?-@y57>%TA=>`+R<$hA2+EBFw8(3IqH=FOOxkS0@?FmdX*yGt*tDLmVM0DRwz%q%V zpD?1DshVciH-zwnHxlToKXqSPSNTJadINjYBCu@DE1LuPs$;W99{q!;8M!&Mj6u!A z6y*jq{Q$I92cs17Kc8;U^K=?`AX&<6rZa=8xZo+XKC7@pY=X%q7#W^LlVy$ia6Mqz z={ZzqjK;|P+;kN!#j;C_Hx|t{{>it6>kCEOHc}Z^qz%(BBh%0|Z#c(?c_#bJGi;Wp zBX<0wiIAsKqngTo=zjnEIeInCkX~=TIi{u3u1IAaR}B-IFcOBQ-cza$4l?#E@8G>q z41)=s^y;e%o@GVna(T;!$_m|Il=0~Bj{a- zLxoQ3%pT%+Dtsr(OwY~I!$!vN>>Qnd1|xBr#=)7))covlBWt9y?fL0RHr$Xx@)F}B zVfZ;s<(ie$xOxK{NedfV&NmW*GqV^J42{34`)SK9Bn{#Dp6MEf>$*=`0l&@zOaHrn z&Cr-0>Fik*Z``z4$25N^bf$B&5SR%+!F*G9A!K+neTE7%D41MlYPzB40+9%kNyv5r z?K{RD*YjLQcT`^pU)-YxwyIho=MPyzEi;WXURE_X$cHtwr%sKEmi<1w6$_q2imdp2 zEdLOi-bmNrc*FIsT#3sETuY93+}oS*8b)9Z z?|~(Fj5Hp%t<;Pzt7WL%^S$FrB`2`QT0SZR~uKBayb)!FXu`s(=+I* z^kOp?nk%LufAhsCj_au2l_kUSblphkBES9ZQL+!zrUbOG*u7Go`&jv6DKY+BSihuQRl^D5ujVQhQh z6YZ&Xd+J#}H_gtyb&j#K?E4}6+UV%7x&xu%Gtc)uR+{p^sY1W`-p`e; z@>6)nWq1^%BYX}cF^y4;kuIAM!Z15GKX;f((?DvVLKXw!MMHlIjfxG}4^kqKojN|y zuG9ERrphvqB_A3?-oDRc=`yGv84%AG&dXIUE_{so0_iLq4A8DHFU08iB#lT zc9`;n9odHI`iwc2VQOZSOj@4h2RUInrU)~R$+^mGjQOOY8fMZDJSa`W$tP9a*3-70 zd{<58T*J?L!oYn6n&7JL>At~rZ7)x`wwF)kN=Y4NgbAkUxumBVdEbJzwKOPhRn^h; zjB$gTxHHwxdl^ULhT|nQ$T5!Ohmz&AolqIaIJeQZKUMw|J-Q!$)hTG;UsnFA@``d* z`KQXipmruJJ2Gs*E~A~$tkg*8PqMPv47E2l=E(@lmckH((L~##38f{*cQA-iLA^jK zxWaoCBg6D%T#b$okD&9Qy(^3c1T^~u!xeFYRNA*|bb%X5XR;BQ2z+svE{mH;qr$*_ z)H`q-=wcaMEt{E2(*UD8>bxid9r`(0Gfb|gh3*AR%ZCYr8JgjU$VZbJP{*MWnZj_n z5KdSz(8PhM8y@=GSK%(C19mOlL4@BRxN5x}vL#vgj{{~)hiN|(|6y6i9;L8r#u zMMLkf6dM|rBsAz>^dp2~q#Z!rqgvVwoWx0BAPaTltA>~ybcCjvrk$zzdRUtAFuh`_tj7oih5WdbPUE_2QHIpHO4q8eycg6v*w89- zXc=J(c>Qnif3t|`)?_;fBa$Nu!VD|OVFbvM;Sa72j2{&_E~F78lSj%9qlr$LnVQbX z(_}UFNc!jDBT`ewst(O_kTpJ)$kRh6?BtN|z*y;-vTG%AgC)GQQWFKQOlX8FyqwdM znyM~dS%h#VjcggPv+E`@MhRmCqriMeEhNmth7;+Q;XA%2Dixsy84I4WrF({M)=Vu~ zC?qv(7-31{YlSg~>s)J?W<$e?^NxCVe; zMg~yn26=-;#O?K!{L4T5v4YZ^6=HB*D|w(41966pO;BCa|N0uB)>L zg1pf9HB}QiU)*&d4i_+DR2PzBn_eKk`c)Blrp=k*sS3%?o?ki(3RR zxx7+CJCC8IXMxlJZ<(jYghawZHDHG*;<&?j(GAFEyY+Ut@2wj*-oAeQ_iG~~wHj+y3WZ8_;Ev|GIJh*}|69K)A5!l?0l(gB6B!@e zY7f~I=3BMeTW`McMlF|n@kni{cI3e21Eqx+RafAF{S@fe6NFAcchkd>f{`(Mb_N0! zJ5-0+3=Jwd@`i7QYd9GHRpFY!FiU$)ZdeClD({fWl0z{oRTd061?@H|Voz{k8Hm}K zme3G6;hh=Th5=yRm2IV zYWNns>U`F4l!rnwHuD;Tu6V^gwY(_FMKNsDci=IYIiPzis*T+j@8ISvuo=4tiZgKI|#l=(Y_N(poi#ykM@VEZf z`ubbFoc6zkoEVh9nNLIX35Z1a+i5SKw*Sc|@408~#ZT?u&yCH8n!LIAZJA#}hVcge zX@v31F?DMcRbu@|189;7=?x;NDaFw(c{$SPVlXu@Y7V3d@ZXG5Iv7e0FIeOuz{NMc z3@|q?%9-N+TqehO#SWm=-fSLkc*9wc*bx>|Md|^~b9dgKkzALJI`EQ|e2nyx#A9E9nT;(}S9u@I8_FfdQbhgwk~vK$NHwd`zz`%&3JEN4Q~XZ@V1kzS^_moSXCB)%&9 zL3-F7JV)O=-&PTtOU;wbCG+Y_W;3?{#Pj?cVeYDFUd`1`xZx?&JQenETi_Hw!#2>t{(wL41HP5GEm;5~-ge8mZzh&c8+_mog>&~u zLM``S{GGn8_-udUm*6nCo(<6UD?%8EL1^>Ow7>leYzQFBJmla4W53$h4qAT$U@fo( zo4{IC^+NiYVZvwTM`r85d+2^C)~*{smD`hSwsC8` zBeow#Y+lFdS?C37f%@m4VYb8mSz3SgoW);bN%mi}@8aGP0%++&z5X`12F&yx#!TbB z!68%oR|&STj}3m3Cr77vjh*HLe2np@*u*6Bdp&KbF#S*HZG4Bd(82wCC)w@eq2<2p z#={$TB**wI_v^fL)Z6m?ZTbEpM*GSepL_7t2ajA?89zBbh};&gNUwhf-9h<_De3o- z@Dqla%|Q4$89{_4FhCN@h<%&=WaZ)c(649ENO5Eam}BPoV#^N(OHHrp=j)y@r)nar zjtnF4w{=5QBP(O7#d5|^^7DpxN}H^k71Kks^^xa(tX8tc+H}33bKP+Ebc(e}I6wzG zgM%2$tyE?Rn2>5jej_E$v*+s_LZ5(FEYUN(_j4Hi8`91-DTfF-Mbt@3tbdo}z6wL` z(qoYZ!Wcn&rF~AGTmQLU-ehWFG#{odQ5@7xadp1Xa(yeSC(Xj%oEsv0a^5_zmiEl1 z3nj+V38(6+uP=o8(E>C#=k`QNoXV@UT=nieQZk+znh7r|TIUbUiri?<^{3035#NNK z?cu0#+fOKqh!Fen^9Qv)=^qH+2lv9rggVKnD=K(M>I~_o%*_DX+SNJP%#3tw;M9I# zH+iata87G}KxZugT=r~ak^~EUo!jo9YjZu3M8K>+d#e|l!b4~m*}w)CKDa*z0aJ64 zFClsydSAbKs_h|xu)yvSW8`WrBU z#N%Ma$d5x?#BN-s48@JuIZMb)EY}iU18#b$I^}z+nsKdwtG>FpWv7lPp z17QPxsqJ+<*B+R4p2h{Fgrn++!8{a~tLago z&t{SGWNI~U`%0K!Om69KE*;k&`^MLwQN+7~$@Y57RJ;eoq(*&%=3eDIiXk6l_TX`#Wpd{Gk$r(0WN1~NhF+t zgibHZWQOUu=@1$nxQgi@)&Oh(K|*s`jvfg+@9Jd@prq#dfn%c`x#kMZM+A%k?l>uE z&}y+3I7PshUVsat<%IFBHh$M&ZjYB>Nq-!=q7AcX3>RVl!>n)S495l7Y}lG65?(R_ zpa@tZS;kSJ3C}?uC6zJsAgY8S(uIYdnNnS^=)1aMTWS~r?r>1~3_LnpGcDCILIh8N z;R@suEdbf*J@nms|AA@HJF~Jks;oUn&E9X*SouJW`n*wxA0)L8=^okkb+I$NH|ePW zNJ)0MUeBi5nOqVh0H|xSK9(ISL+ZH5?VXQuiA1hEX8HEJ#`JxI1))RST5z_p+-p+kl;WQ@GNxc{2Z{MDOAuVa#F&mFp89R%9BAN5lmOp6UjmoHvua^N6DXs zF_sRaI*&6y$kjz`bA*!ISqo^75heuy7Yyw&s4oZk%S4DYCd+C-_zmRCpmt`30bCt6 zR*1cDd!fQCEvu{g07v>ViSTEPshJ$%&2?nIatIUQP4zwHv$s6u@01n}tH|_hbENHD zpaM+CxYY25WDLxaFrP<07`jEZRWKt|6X{<3G!aHDu?-cD?$Di-jl7?xA$1Hhtg}2u z=eFf){IL)7vSUA$Ar?tXB=HckzNL+t& zaq;W9+`pm|U!^1?7!dkbkt1QM4HV9G0lGo+&Lg(2Sir}n7PgL#O9%zB)X()_2R2#( zg46+aa+ug&kSF{jyC^-$j)Y0^Og%KT%JD1{($3ODNuPW-Z2^x?0wpOe=4PJR!p@qA zUq{0bsh4Ay!=)Gf_RpL(@qlGL}I@B+l8u9=rvw!Xs9s93RrdCnr*5 zX6DF*!L%h9rAK$n4`rqHncCPPx@#$;%M5S7-)bFbvJaqW*q3X>s7hlgp-&csW z*t;e@KSfi>T8kKO%RmN3+5p}vlp>p8^b^;we~YsxS}pDI6G%3P=&2wyw!u6g7eCfP=Pk4gDFDo<7A*IE%8yx*@3{%`{P zN3aRO$)G1fOQQ$kXHOI9B12>YIB__TMYb&>mpDdbNX3)xqall}MpjZF&`TYuG7~%n zFBn=QF|>bfpT4!lJC>hE)MEtT03`*`S#BkKJ@BE@fV&7E`YfA3`d=iA=6WtSIbqm> zCG=xQe}qeg;8hsOp#$^#^zAJ$*L+vAJcRD>05hJhIbkY^YX!Oms(~#+o09&*)J1~- zS1gyEm=t!}%ZK{WqqlsVpCPi3(al)dOM4|bV(|mcN-ZzV6=J5iWn^Q>wjjeMAG{wA z9!Zo0X$E`99)aiYj$wnKbx-(Ucm%j1E%2hy0iKWCwiYx(5o%t#VInhY71E=5PlJ}v zyo+?V?ZPY42gcnd4%vI0@d4cgz72K_;#v;4UxyJu%&y@H*dt-}#_&3jJ(MQBTI86#TeJ)}~IUznj>Pd`NQYB&t0D-Uuumyg-~J z525GfpKOQtN)w#a+f3%4agoweNhID&wL&`pmxH-RSkD;k^KCtu_l-~wP^Sitmf*+0 z{cs}KCU?tMI+~gnoqu-1EQH%^O8AD^D50D-?hl!MI?n6 z@p^XSC3WIe_q0+U*xikp+*TK!I(6mLsrK>XSB@Y5{;uuU+rUpxwVTJA&Ev1_+9to_ zz4!3rH(>ET3NL#Nlds6~L7>X?204VH!EaDvzn8s*R@~2t?t#BDHNW(;rA_FQc+ zk?O#j>);>3Od`)I>U-G8Oh!a~IHpe|CE=|fWT&#j27&+w{5qt!Vbi&3r-}V1itw@r z2H@Wm5n6!`0XxBwO-M!zq#Ed&$S^7cSP5c$~9JefH+rOsztW(R6K| ztz%4?D{OLfW?}b?&s)!f<6?;U5ueEGgbI&0OYu&;2@<&+!+{` zDFNzaI(wMSPI9zw4o>9LPls>4$$WKmbaadh^Np_~@;=Y`__#R>Zr~|x^Kw_5I-Sq| zFRpftJ9zPrpP3Z-d^H*P$!sEV5T3v!&6B|k5!4Oj35nTDx#u&=dF7MvD#7eDNK4`; zNng?}V4tT2x)FWXNXME4>V}TV4({xF!ZFdw?*{WxT?lL;DzM_ zpHoM20D-WD1_tWw+otUoO?0Xbo(eHJn~1`#-=$BXT924uYJ%l+C7-ggCz{RIn@zYy z$7?2XqPg4;;o~9M{H<@{L+9Bn@JdUYF+9X*0|OjcCS!)244$oXfYFqefJpVX29dZ% z=;r&no@xknLw^D-l7QUZgPt~arM=;`;a=mK;VFE^j@;BCHZnEb_|OAO z`=95}?`WNwv;6F;dcnb7MzgU4a2P|uxwGP5*4f>6vwPTZneW@r_N^Eky9khVzHc9V zBAC{>_g7I{!)NVbq2vb*OON#!%^-+1->!5gvDqkCgNm2Y5P4(6fVZg@Dn>$xk~0`H zBOt0cHbO3i&)}KkYtu*@>;=&e9r9`55HL=oO+eTw2Xv`p!pY}DYkHbbvIx;Mj=BgD0$p@P+omWn#F{17MEgA{I~fWDfa@w-C?H!()E}lV4?=58eoFKPFPj zfObM9bzBE`M6YP*=bm*WrQEZpeJhCXQFd^KvipENcBM2v%XKSh!3Xk;{8*;gvwB)8 zN@Nqjv$${^r0N~VP{DFkQ=XP6z26vSZO4Z0(;Nq!^;@Cby9};yn91w@NVAbr)t>dU zl0ddJ72t|15i>-Opz5f|6C(ls)cdXCfR@gwET0EEI0L57?YWVD%={C?0#&eJ$7%Kt z*dNG?NPa!NO&^4GOi>O1)<|^b+rWJ~*%4{DI%pOFD>PPT12wf+Dizh*0ISzaMLx&X zg@xA^7QPbkcK+cuoBY?|>PjNSBL!h%Wi`ZR_3YE7Yo*Kd=DGZ-r;7jB|H#wDe_ZVA zjX!|?P0M^8;rbsQOBw?W%Gxr{LTf#V7T~;nAzo7i} z-Y7(z3qwV~JYY2l8toxo#B_i;a?EiUpjem6DI+M*4Q2u>gU*>DECm<17{c zUD!(4rrDVahx1NU;@fu3%bVBD8;i_$48!r+!W0iN2vzjKCon|>SPa!(p6RFLpcOz8 z24Th9>t~>{c)}G0;UwjzV`NI9?Uk!3HQ{Ob0*{Ig_<{)KvL#6U?YqDBw0U*&@-Y1- z{WwC{kdLT3SYs;qDh97Msk(kEsfYB7Lpi;D+%>hk0nDP+!9K$#vY{N#3-YLdIS9m^ z2MPoWXrvH+z?xZB+08EeKpb@Kn}txq--PkpJ7Kc5{^eZzji`*ShkjB$w0sB zE_}bg^VnmxT>F;*Z`w)2PJx`L6|v()p4{$p3a=v%K>YDOTZ?i5z@MlQS-=Gy1+YPa73DO}S? z89Ocqizx?pTY!Q4`SrKVH{LKGlo$hG2GYCzT;&aLFCJAcD_>H+s{DFy+yYy>CAG*P zLdenF(qWpVT{Nl0Q(#MFC_)ec{vfv$o=+drMv;bL%?naKLu9H>dq&6>^+Y6f`q z>SqKKDm*vjdO=-=19#bUx$1&m4UYhwFz*5@M3xC4Pgov%S4)TRvqMK@K;`DF)gl(O zi3uT@0cQA!yD5W^vxm*XAO)-zcth5Jog21*JL(#c$CPjYn-~e(b>ZOWJZIRcBw#b# z46dsS&qZ=WN0gP+wFz&WIQqh^0Gs5Rny}m~hOs;0X)mPVOTy9vfiF#=zhe#|gKswg z%;5pdg;|D&yrsMV?){h0@6^PyXXDHxb!0o>4Z66PmU#rnrhxi+4fU?J^00*g}8FdM!!fCr>xzU0|4eNzT?}fliFJz=mg$i zX~@c(nY^mQlQYxc&}xYEog6?_cnOHQvWfbBBu0h5_&^nG^LuXUz`l*yO>5{)rkd>^ z>+MH(?8`aXy*MV6_I(ss<_uUnM_`#A!YDmSb_q~V1!DvT2oNoH&lzfHFX7jg>JTA~mfI0Plv-405Z3JvYx1M`$A=d`Y4TRP~seBeoJ_1w3 zI^ux{)wyvQ6yp$Vn&R4)#R|4cjxN?=s7)U1X%W=9qr2-Mt*O~3G8adAG!{fQTQ=L zsn01d$?=C72_O?l-yO4FBnlDx`^bL~Hw)M-Q3mj|l-9+EoF79UG&KhMvRU9$^rCL* zYxJF~4tdKs0Y(v_tNami!6NubNN7Oy z##7uLP9H)t+VOora}8)r2MLcCdrX{nVSbS%GBHCJ*>~;YwJ6 z<|E+@dge@Fq=WQ7=0TM7(JbAarVkpGbU0KiA-S13S_RyP96xKSZqoDY09+MdRy08_ zS3Z~#NTP77l<5=@9d&xd9`w^KOd-am8o(Cr#eC7Tv`o(}bV`n;p6Zm8MG{l$70OCs zig4cziIwXeXM9j4dgo@&0hhSB-89XU^6%pwj2Y4fW}H|EkYM$78gRfDl0y#(@#(0Z`=67R+y7~Lf3NY{|pEt?b$5i;Dc9earX zNwxC3hikh7Qv8@CJe4kl;fso^8dNiHjenzz;6!k_L+Vk#HmW~cN? zVqbspj{VJ(Ctp5!^8d63fF2^z|C!77;UcK)+MN}DZ}vQ>jR+r|KEy%R`Zh8oDKT&eQ;JRQJK^|bgsE6{29T1M zCKl2LcDThnkLiASaG(~c=D!B3#N=kWlpPReqUt3=%x)_IbGe&c&hN={U!$D^;2Nry z=@y1_GUX@V5FHS=)dPmI2V<1txc>MAl1nyHwiQ~FTJ*MZJAOxGQaGUqNpq)8y_88K z0zcV2J~$XfaXEf@X{m|yU9D!Y5-)LM+IaEB8_zyd!0VsBxC4}~{|^Ic{m7LgN3Q&J zbzlIN0O~~I&Og7Ix1U2k;A}h!{-V4+?kG)a8Q}q@F31gP_7A8GSVfInKc0#TL%|QS z#(y-qKMtOlfjL%qGuBzF8G$sRQlBUVDG~8vw=*4_*gX6p(t210sJ|kNRgeXjyrHl^+)A6M3`D~gT zQqa92qL`=$QIslR7D6d!aT5k2MS$W#GK@&FfgMT46wx-JX!xQe73>NTrP{_|ivz|{ zWaBX>LT6dM2(p>mbVa$0xyo)W=L)R6z#=fK5H148hxq_)a-4sRwL!g}1oo$MH#<uhkm-Dvj56hnT;*JNW#O8AO3?PU{>js+5g+1A!e_rILZUwr;LQVK-wr zqng27em8V+F-$WVnqIwoa$?SatE2gufjWK?kx2;&S)>ynjQBas?)}@l;#2C8n}KVu z&1pui2k)yUv%*GH#Uy!*b*x>0*1+61v~DCi1X^G!t{~1i?AtFtkAa=dssqFNo^p!K zjXO;Lt4a0+ZI=D_Y}HSN3HHVq&*h&e7Fe#N{b1*Ga{!&a!A~#qPp}bo?<*`wAAYVb1Zi}TnjsaI&3xXqwRAcR%fll>slv!ehh_8Nf=rs00fspGRyPm0 zESb!^%^D_TI<9UHHVUUP%kXa(T;iFMFp2~5N0%?i9P?f`WfESyI84i0V==}W)j z`v>h`Y`|$WVT1(9VGBv>!u~1{%zTWH~Mbu^@WZ!idRDDoMnq}!5Wz!Cl zqS6b9c^lV1^cM6mxZ@Uf-5(C7K~_Ohlz!g>=+I^$O7mwXfw=E zPYV#`he_+9kAN5d!$c91iZEs0K^8p>W{XV|%89asNh~%XBo+jFLaaT26&o^D!B6GW z8v7(%bldf{o&5WT3P*>FduL zUd47*dKNk0VY%OqXR^TgBZm(by7AKHris663-rE8dZB;rOC;se_YSXLe=)|f;$#0i zR-5#33`vh(zDmGf9OWPTn11r4PVeL6p#1l?QL|?p*NySTKLM*g0-8QcYd=xDl2ws5 zh9tPBPRK%FG*Ht)so*5=q{zAG%QBe_*cPZ7lKB|ULnCAIGw^EDOJN2^60~d+ne&w4 zrMc!5YX#Q;IBI6b^8;Lrtd9t_p11cO#k?~RO`SyEo%3=DM+XVp6L(?ebLbV^2(#0m zdk2w#2L)TrxCsE7wJK5;n))~NVNg5*X#K*l#%*K-wSXWi%JTvU0>#pcWZO&ZPx?&; za!(;p`vR?%hL%Mi#CX9iWPp@J3_-T9nXhAd)N5C-ULm}(+59u@t?z$XPFA?Nl1m&n zK}z2SyJ#FNEMjh+#p)TKm#8}Fh+#CJw8c_Bp;yqN(7~Yj3lMNgiBRB+wLGYqNrOr1 zw_KG05is>nd`=H_irpgg6S}~lX(4@UFO?A@Fnk5iFnvfRbB~iq6VepqA9mpUBopZY zR~sU##9>hAoM8jWZ&fSk7Qup?&#PFZ!%=4{n%B%*p*HX6UOj`L$Bup=XbQdOZ3as@L`Z}g)Nm}O3xeoshIVM8f2`P-V z4VGjgvl=i=geMIG_i0#A9d!wW9=oU|%ZwI>&X4*04Kl{U7~}HjG;skyk7&%#daStOC@C~sQEE^0QJcnul zsxS-Sqn1Y--)@Y)im6sy0VPnyUK4^pm`G45-P%JfB~{=Ph0L z8n|KfeXJNou21~SKxCineRZbxu*QCT>zhmCd^28cl;$X0#i*uiIPMn~036@@_HlLd zlbmm>zkoSR>ha_7Rv+nO95f>_=Hj)GPn-w#b{DO(C-p21Q3||!>F7Atj-zWt>7YZ* zbS6~dy+B9AP{_?KxeM;y?Q?CPO^4vpnn{`3Pnyh5Wjy&;{Da$P z)@HQ;^f3w(EWDB#1IbfRUXMt29kLmN@{igM7&ovr9r`@PT8?c<@55kSZ6l-iW#zw= zy&)x&7{#$JP)Qxt=}krsQsvMda0pt{O>*i;*hv{tbJE;6l4Ck7brJkx>2$)*(yR`~U)`y&$~wzccs?xc9OvFJPH#Zl#w%Ji zBy$Q2T8&_CD|k{Luq;MA1bYM0{POCroc%j@J^8t(CU)Oahac1{6<&`&{->E=S^e_; zcR%^dPu1^8H4Nf}YNa9HF>X{EJjx&9jw;ACEK^Go-4L@aF)n6kB#o5l$ePNazRI3WViK{{!emOjMPN zM#a%AH4|p8;#|@il+#8_lJ`nct#pAP4P<9=qV!v+8%P0@>gp#vNZWQAbF>fyKnUF` z6hUNhTqE&WFnY1@QrbuqX|W;XGxG`ed9Y6c-;A&z6<#W+yZ#qwodzU7^~m&rZW^hF zs}pc3AoV(i@sRG}f_9?lVRHx*6I{KLcd9wKsA&!dKQZ1)U`3eFDF>pES!e?u!m1bv zsH{XD^ke80ST#nJd7+sFOt-ZY7JM1Rw#a9KMH_(#q$V^ki-E@Jb_i{WZ~&dJsda6% zVt}v{fFv-i4`PA?0lDyy2C-{cxlYT~k+lu%TrC>(L)Qwz$#%*G>4V);b6P1%-ZZS@!wy{ znGC7uObbcC?9G~-sYdE#a^@SDx%Yt80&fzNrEbc67U#8TuN z*201v_;v~`O#}Z_Yb-ck!=F`q%xiV1xfFL5Ar)dKE*;A@|)_5|4 zb3rS+eFn@1oNO5OdHe2m)5M|#qpJF(arPbFz`%FB1C!t-Kwx+xlfkewEH_LwlbC&h zDVwM>8FGrOItJhrD-cm$5qb852hq+T2<6P?xSLzXDOK{R<5>M&jI0!94(wGHV=YW+ zOFSd#!(MpzL28oRG62OmiO%c0v!`NJ$Hd@lCzZ1*)eqBb%^(Y?1QD7J#{`P=JfGCT zzkRo-pNzsV<`!h{+J_ZUK3E-r3GWkm!^805#^1u%b6Gr-0zdWldJzMo7^An%VR_u% zwu-G(Z(GB5wYN>4!=BzYtp+mJ+qO}AcW>LlH!r}tGtELxPI;-f&4HD?+S^u9|IOaE zhV9?!ZR=Qjk)LYiBktZa=bm?$Y}5*6ym^ z+mEkqZLe)ytW8a{cUK=7YF zZG2+&%+AF5ot@2nlaptA^%G|{E_~>JuX6i;t@2_23CoAofAD|9@?mEm15$la{>LrL zz&cj3f?N$NYrlZ^ZE(=fA+FlNzq8n<{P6~QrG^-b{u>xNdmaBaP_rqIeF8OSP(J~k zN#EK8H+T~N&fanU1kR!>^>VAbKCyY*Yn9Rg44DFCc?3)Z5^>C7F7u!+0~Rt&&1NYU zu{6uDEX%PxE3hIfK?9RFQ)A$WvIZN(njXV|?3-*9^BecDan=HqizzH@icPZ_Hp@C} zj?IHCxR>pNzjpxGF~vKJ>@G$W=_Bl3c9b1sOYA;&KLGLv*+|u7CeUv@I9%U!k zW9)JEF?NzY!JcGKv8UO`*)!}}EE%=TPO~#?g{`u)ioLwH)jGYrzOivpEU%xwbfGnE zF0ZexUTn?GxY#&%v2|t@QnS_DSzkT7)0(!HFPw&CUOclZmM^YsZLF=R%bS}z%KECd zyt8q^THe`NK6AdcFmEnjT3Op@?VUDHFQ0jC6GcD0ymD?;J-vKRJH34IIr}uuUEO-2 zwJ;@4LpocXj&^!ueMR6GPPgV}e0;92?zGm|ws%@{^X}D`kZC_YkUw6(dZ|$_U*Dla4pEl@1}t-UirTytqN-k-HG-Zq!Fw_EK_0^@yWYXeWZ)w-~;vbuHA zIkUC8vbNL0eXe*btLtmeQzM;S-rg}+FD$REw-#pl8y#!)GOoF`+M2e{Eji8jw~TwL95P3z}(F06MI<#uj)``JhH1?Rh{5@t)=Y^1ndrGz?=d$vS1$_u&quA(Yv+s$8>iRSSDg#E+zYKU z8*3N0#l;Q$ZhJxdwqVHX%~0JNeD6 z)w8QxtB|hk{;zFq>_DSgo0mTQX*BUvTmR%GT-U~lTdUjWTkUCg>k>5`ZtBe1y0wiT z+CICsx?*mhS=-*;*xJ^%S1+zO+xXG7i|4jmd)wj7?Q^T>^10bt6+0Un>#eytI~I=C z^2&o@`mSMU5=v<|TaN(#6){oheZrtAO! diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg deleted file mode 100644 index 93c6dba..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf deleted file mode 100644 index fdbc77a39841908e8d780c5c7c86a55dd6d5a02e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27376 zcmeIbdz2j4c^_E!*5lT@s=KS-&*`2=&tQ6{=g~8R_mBjE;X@=uf)w}=i2-H+j5xrI zW(E)_QZa2yI*_a=jKl1qHeN;RJ&_s5Cx@Fj8)VnNJ=4HQMaqA14q&aFRt_WD2g$$4C$ zrYI+0I={NS;yyiI#<|}|nLCdPZn9I@{wl?0Vh8m_AH*5bLdr{G`_p8d^#e1Xo`B~h>ooE3?S5f;Ruj6O$UQrgith*wgE*n3i zyocV|RP+Cr|9sj2-9i0K{W*>TS>T1ZzgUD?>Z);kLgG-bDc9vW8r64K-h-re8NFja zmLiUGHC)k91SHDB_Z-NKr}#>sgi1n5Dk&vW(n?0jDmf(&IV~zBrL0txs!~%1lsaT> zP#IE&l@X<>j4ETw9{hewnNTJn<5SACGNa5Y9c50LR~D4L%0A_QvR^p}=|8M2DtACS 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 diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss deleted file mode 100644 index 1ab9a1f..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss +++ /dev/null @@ -1,90 +0,0 @@ -.alert{ - border: 0; - border-radius: 0; - color: #FFFFFF; - padding: 10px 15px; - font-size: 14px; - - .container &{ - border-radius: 4px; - - } - .navbar &{ - border-radius: 0; - left: 0; - position: absolute; - right: 0; - top: 85px; - width: 100%; - z-index: 3; - } - .navbar:not(.navbar-transparent) &{ - top: 70px; - } - - span[data-notify="icon"]{ - font-size: 30px; - display: block; - left: 15px; - position: absolute; - top: 50%; - margin-top: -15px; - } - - i.nc-simple-remove{ - font-size: 12px !important; - font: bold normal normal 14px/1 'nucleo-icons'; - } - - button.close{ - position: absolute; - right: 10px; - top: 50%; - margin-top: -13px; - z-index: 1033; - background-color: #FFFFFF; - display: block; - border-radius: 50%; - opacity: .4; - line-height: 9px; - width: 25px; - height: 25px; - outline: 0 !important; - text-align: center; - padding: 3px; - font-weight: 300; - - &:hover{ - opacity: .55; - } - } - - .close ~ span{ - display: block; - max-width: 89%; - } - - &[data-notify="container"]{ - padding: 10px 10px 10px 20px; - border-radius: $border-radius-base; - } - - &.alert-with-icon{ - padding-left: 65px; - } -} -.alert-primary{ - background-color: $blue-navbar; -} -.alert-info{ - background-color: $azure-navbar; -} -.alert-success { - background-color: $green-navbar; -} -.alert-warning { - background-color: $orange-navbar; -} -.alert-danger { - background-color: $red-navbar; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_alerts.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss deleted file mode 100644 index cc6fdfe..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss +++ /dev/null @@ -1,128 +0,0 @@ -.bootstrap-switch { - display: inline-block; - direction: ltr; - cursor: pointer; - border-radius: 30px; - border: 0; - position: relative; - text-align: left; - overflow: hidden; - margin-bottom: 5px; - margin-left: 66px; - line-height: 8px; - width: 61px !important; - height: 26px; - outline: none; - z-index: 0; - margin-right: 1px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - vertical-align: middle; - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} - -.bootstrap-switch .bootstrap-switch-container { - display: inline-flex; - top: 0; - height: 26px; - border-radius: 4px; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - width: 100px !important; -} - -.bootstrap-switch .bootstrap-switch-handle-on, -.bootstrap-switch .bootstrap-switch-handle-off, -.bootstrap-switch .bootstrap-switch-label { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - cursor: pointer; - display: inline-block !important; - height: 100%; - color: #fff; - padding: 6px 10px; - font-size: 11px; - text-indent: -5px; - line-height: 15px; - -webkit-transition: 0.25s ease-out; - transition: 0.25s ease-out; - - i{ - font-size: 12px; - line-height: 14px; - } -} - -.bootstrap-switch .bootstrap-switch-handle-on, -.bootstrap-switch .bootstrap-switch-handle-off { - text-align: center; - z-index: 1; - float: left; - width: 50% !important; - background-color: $info-color; -} - - -.bootstrap-switch .bootstrap-switch-label { - text-align: center; - z-index: 100; - color: #333333; - background: #ffffff; - width: 22px !important; - height: 22px; - margin: 2px -11px; - border-radius: 12px; - position: relative; - float: left; - padding: 0; - background-color: #FFFFFF; - box-shadow: 0 1px 1px #FFFFFF inset, 0 1px 1px rgba(0, 0, 0, 0.25); -} - -.bootstrap-switch .bootstrap-switch-handle-on { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} - -.bootstrap-switch .bootstrap-switch-handle-off { - text-indent: 6px; -} - -.bootstrap-switch input[type='radio'], -.bootstrap-switch input[type='checkbox'] { - position: absolute !important; - top: 0; - left: 0; - opacity: 0; - filter: alpha(opacity=0); - z-index: -1; -} - - -.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { - -webkit-transition: margin-left 0.5s; - transition: margin-left 0.5s; -} - - -.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container { - margin-left: -2px !important; -} - -.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container { - margin-left: -37px !important; -} - -.bootstrap-switch.bootstrap-switch-on:hover .bootstrap-switch-label { - width: 26px !important; - margin: 2px -15px; -} - -.bootstrap-switch.bootstrap-switch-off:hover .bootstrap-switch-label { - width: 26px !important; - margin: 2px -15px -13px -11px; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_bootstrap-switch.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss deleted file mode 100644 index bd0d462..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss +++ /dev/null @@ -1,132 +0,0 @@ -.btn{ - border-width: $border-thick; - background-color: $transparent-bg; - font-weight: $font-weight-normal; - - @include opacity(.8); - padding: $padding-base-vertical $padding-base-horizontal; - - @include btn-styles($default-color, $default-states-color); - - &:hover, - &:focus{ - @include opacity(1); - outline: 0 !important; - box-shadow: none; - } - &:active, - &.active, - .open > &.dropdown-toggle { - @include box-shadow(none); - outline: 0 !important; - } - - &.btn-icon{ - padding: $padding-base-vertical; - } - -} - -// Apply the mixin to the buttons -//.btn-default { @include btn-styles($default-color, $default-states-color); } -.btn-primary { @include btn-styles($primary-color, $primary-states-color); } -.btn-success { @include btn-styles($success-color, $success-states-color); } -.btn-info { @include btn-styles($info-color, $info-states-color); } -.btn-warning { @include btn-styles($warning-color, $warning-states-color); } -.btn-danger { @include btn-styles($danger-color, $danger-states-color); } -.btn-neutral { - @include btn-styles($white-color, $white-color); - - &:active, - &.active, - .open > &.dropdown-toggle{ - background-color: $white-color; - color: $default-color; - } - - &.btn-fill, - &.btn-fill:hover, - &.btn-fill:focus{ - color: $default-color; - } - - &.btn-simple:active, - &.btn-simple.active{ - background-color: transparent; - } -} - -.btn{ - &:disabled, - &[disabled], - &.disabled{ - @include opacity(.5); - } -} -.btn-round{ - border-width: $border-thin; - border-radius: $btn-round-radius !important; - padding: $padding-round-vertical $padding-round-horizontal; - - &.btn-icon{ - padding: $padding-round-vertical; - } -} -.btn-simple{ - border: $none; - font-size: $font-size-medium; - padding: $padding-base-vertical $padding-base-horizontal; - - &.btn-icon{ - padding: $padding-base-vertical; - } -} -.btn-lg{ - @include btn-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large); - font-weight: $font-weight-normal; -} -.btn-sm{ - @include btn-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small); -} -.btn-xs { - @include btn-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $border-radius-small); -} -.btn-wd { - min-width: 140px; -} - -.btn-group.select{ - width: 100%; -} -.btn-group.select .btn{ - text-align: left; -} -.btn-group.select .caret{ - position: absolute; - top: 50%; - margin-top: -1px; - right: 8px; -} -.btn-social{ - opacity: 0.85; -} - -.btn-twitter{ - border-color: $social-twitter; - color: $social-twitter; - &:hover{ - opacity: 1 !important; - border-color: $social-twitter; - color: $social-twitter; - } -} -.btn-facebook{ - border-color: $social-facebook; - color: $social-facebook; - - &:hover{ - opacity: 1 !important; - border-color: $social-facebook; - color: $social-facebook; - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_buttons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss deleted file mode 100644 index 7049779..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss +++ /dev/null @@ -1,255 +0,0 @@ -.card{ - border-radius: $border-radius-base; - background-color: $white-color; - margin-bottom: 30px; - - .card-image{ - width: 100%; - overflow: hidden; - height: 260px; - border-radius: $border-radius-base $border-radius-base 0 0; - position: relative; - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - transform-style: preserve-3d; - - img { - width: 100%; - } - } - .filter{ - position: absolute; - z-index: 2; - background-color: rgba(0,0,0,.68); - top: 0; - left: 0; - width: 100%; - height: 100%; - text-align: center; - - @include opacity(0); - - .btn{ - @include vertical-align(); - } - } - &:hover .filter{ - @include opacity(1); - } - .btn-hover{ - @include opacity(0); - } - &:hover .btn-hover{ - @include opacity(1); - } - .card-body{ - padding: 15px 15px 10px 15px; - } - .card-header{ - padding: 15px 15px 0; - background-color: $white-color; - border-bottom: none !important; - - } - .card-category, - label{ - font-size: $font-size-base; - font-weight: $font-weight-normal; - color: $dark-gray; - margin-bottom: 0px; - - i{ - font-size: $font-paragraph; - } - } - - label{ - font-size: $font-size-small; - margin-bottom: 5px; - text-transform: uppercase; - } - - .card-title{ - margin: $none; - color: $black-color; - font-weight: $font-weight-light; - } - .avatar{ - width: 30px; - height: 30px; - overflow: hidden; - border-radius: 50%; - margin-right: 5px; - } - .description{ - font-size: $font-size-base; - color: #333; - } - .card-footer{ - padding-top: 0; - background-color: $transparent-bg; - line-height: 30px; - border-top: none !important; - font-size: 14px; - - .legend{ - padding: 5px 0; - } - - hr{ - margin-top: 5px; - margin-bottom: 5px; - } - } - .stats{ - color: #a9a9a9; - } - .card-footer div{ - display: inline-block; - } - - .author{ - font-size: $font-size-small; - font-weight: $font-weight-bold; - text-transform: uppercase; - } - .author i{ - font-size: $font-size-base; - } - h6{ - font-size: $font-size-small; - margin: 0; - } - &.card-separator:after{ - height: 100%; - right: -15px; - top: 0; - width: 1px; - background-color: $medium-gray; - card-body: ""; - position: absolute; - } - - .ct-chart{ - margin: 30px 0 30px; - height: 245px; - } - - .ct-label{ - font-size: 1rem !important; - } - - .table{ - tbody td:first-child, - thead th:first-child{ - padding-left: 15px; - } - - tbody td:last-child, - thead th:last-child{ - padding-right: 15px; - display: inline-flex; - } - } - - .alert{ - border-radius: $border-radius-base; - position: relative; - - &.alert-with-icon{ - padding-left: 65px; - } - } -} - - - -.card-stats{ - .card-body{ - padding: 15px 15px 0px; - - .numbers{ - font-size: 1.8rem; - text-align: right; - - p{ - margin-bottom: 0; - } - } - } - .card-footer{ - padding: 0px 15px 10px 15px; - - - } - .icon-big { - font-size: 3em; - min-height: 64px; - - i{ - font-weight: 400; - line-height: 59px; - } - } - - -} - -.card-user{ - .card-image{ - height: 110px; - } - .card-image-plain{ - height: 0; - margin-top: 110px; - } - .author{ - text-align: center; - text-transform: none; - margin-top: -70px; - } - .avatar{ - width: 124px; - height: 124px; - border: 5px solid #FFFFFF; - position: relative; - margin-bottom: 15px; - - &.border-gray{ - border-color: #EEEEEE; - } - } - .title{ - line-height: 24px; - } - .card-body{ - min-height: 240px; - } -} - -.card-user, -.card-price{ - .card-footer{ - padding: 5px 15px 10px; - } - hr{ - margin: 5px 15px; - } -} -.card-plain{ - background-color: transparent; - box-shadow: none; - border-radius: 0; - - .card-image{ - border-radius: 4px; - } -} - -.card.card-plain{ - border: none !important; - - .card-header{ - background-color: transparent !important; - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_cards.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss deleted file mode 100644 index 021f0a3..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss +++ /dev/null @@ -1,230 +0,0 @@ -@mixin ct-responsive-svg-container($width: 100%, $ratio: $ct-container-ratio) { - display: block; - position: relative; - width: $width; - - &:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: $ratio * 100%; - } - - &:after { - content: ""; - display: table; - clear: both; - } - - > svg { - display: block; - position: absolute; - top: 0; - left: 0; - } -} - -@mixin ct-align-justify($ct-text-align: $ct-text-align, $ct-text-justify: $ct-text-justify) { - -webkit-box-align: $ct-text-align; - -webkit-align-items: $ct-text-align; - -ms-flex-align: $ct-text-align; - align-items: $ct-text-align; - -webkit-box-pack: $ct-text-justify; - -webkit-justify-content: $ct-text-justify; - -ms-flex-pack: $ct-text-justify; - justify-content: $ct-text-justify; - // Fallback to text-align for non-flex browsers - @if($ct-text-justify == 'flex-start') { - text-align: left; - } @else if ($ct-text-justify == 'flex-end') { - text-align: right; - } @else { - text-align: center; - } -} - -@mixin ct-flex() { - // Fallback to block - display: block; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; -} - -@mixin ct-chart-label($ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-text-line-height: $ct-text-line-height) { - fill: $ct-text-color; - color: $ct-text-color; - font-size: $ct-text-size; - line-height: $ct-text-line-height; -} - -@mixin ct-chart-grid($ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray) { - stroke: $ct-grid-color; - stroke-width: $ct-grid-width; - - @if ($ct-grid-dasharray) { - stroke-dasharray: $ct-grid-dasharray; - } -} - -@mixin ct-chart-point($ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape) { - stroke-width: $ct-point-size; - stroke-linecap: $ct-point-shape; -} - -@mixin ct-chart-line($ct-line-width: $ct-line-width, $ct-line-dasharray: $ct-line-dasharray) { - fill: none; - stroke-width: $ct-line-width; - - @if ($ct-line-dasharray) { - stroke-dasharray: $ct-line-dasharray; - } -} - -@mixin ct-chart-area($ct-area-opacity: $ct-area-opacity) { - stroke: none; - fill-opacity: $ct-area-opacity; -} - -@mixin ct-chart-bar($ct-bar-width: $ct-bar-width) { - fill: none; - stroke-width: $ct-bar-width; -} - -@mixin ct-chart-donut($ct-donut-width: $ct-donut-width) { - fill: none; - stroke-width: $ct-donut-width; -} - -@mixin ct-chart-series-color($color) { - .#{$ct-class-point}, .#{$ct-class-line}, .#{$ct-class-bar}, .#{$ct-class-slice-donut} { - stroke: $color; - } - - .#{$ct-class-slice-pie}, .#{$ct-class-area} { - fill: $color; - } -} - -@mixin ct-chart($ct-container-ratio: $ct-container-ratio, $ct-text-color: $ct-text-color, $ct-text-size: $ct-text-size, $ct-grid-color: $ct-grid-color, $ct-grid-width: $ct-grid-width, $ct-grid-dasharray: $ct-grid-dasharray, $ct-point-size: $ct-point-size, $ct-point-shape: $ct-point-shape, $ct-line-width: $ct-line-width, $ct-bar-width: $ct-bar-width, $ct-donut-width: $ct-donut-width, $ct-series-names: $ct-series-names, $ct-series-colors: $ct-series-colors) { - - .#{$ct-class-label} { - @include ct-chart-label($ct-text-color, $ct-text-size); - } - - .#{$ct-class-chart-line} .#{$ct-class-label}, - .#{$ct-class-chart-bar} .#{$ct-class-label} { - @include ct-flex(); - } - - .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { - @include ct-align-justify(flex-end, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { - @include ct-align-justify(flex-start, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { - @include ct-align-justify(flex-end, flex-end); - // Fallback for browsers that don't support foreignObjects - text-anchor: end; - } - - .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { - @include ct-align-justify(flex-end, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { - @include ct-align-justify(flex-end, center); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-chart-bar} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { - @include ct-align-justify(flex-start, center); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-start} { - @include ct-align-justify(flex-end, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-horizontal}.#{$ct-class-end} { - @include ct-align-justify(flex-start, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: start; - } - - .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-start} { - //@include ct-chart-label($ct-text-color, $ct-text-size, center, $ct-vertical-text-justify); - @include ct-align-justify(center, flex-end); - // Fallback for browsers that don't support foreignObjects - text-anchor: end; - } - - .#{$ct-class-chart-bar}.#{$ct-class-horizontal-bars} .#{$ct-class-label}.#{$ct-class-vertical}.#{$ct-class-end} { - @include ct-align-justify(center, flex-start); - // Fallback for browsers that don't support foreignObjects - text-anchor: end; - } - - .#{$ct-class-grid} { - @include ct-chart-grid($ct-grid-color, $ct-grid-width, $ct-grid-dasharray); - } - - .#{$ct-class-point} { - @include ct-chart-point($ct-point-size, $ct-point-shape); - } - - .#{$ct-class-line} { - @include ct-chart-line($ct-line-width); - } - - .#{$ct-class-area} { - @include ct-chart-area(); - } - - .#{$ct-class-bar} { - @include ct-chart-bar($ct-bar-width); - } - - .#{$ct-class-slice-donut} { - @include ct-chart-donut($ct-donut-width); - } - - @if $ct-include-colored-series { - @for $i from 0 to length($ct-series-names) { - .#{$ct-class-series}-#{nth($ct-series-names, $i + 1)} { - $color: nth($ct-series-colors, $i + 1); - - @include ct-chart-series-color($color); - } - } - } -} - -@if $ct-include-classes { - @include ct-chart(); - - @if $ct-include-alternative-responsive-containers { - @for $i from 0 to length($ct-scales-names) { - .#{nth($ct-scales-names, $i + 1)} { - @include ct-responsive-svg-container($ratio: nth($ct-scales, $i + 1)); - } - } - } -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_chartist.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss deleted file mode 100644 index 0108ce3..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss +++ /dev/null @@ -1,142 +0,0 @@ -.from-check, -.form-check-radio { - margin-bottom: 12px; - position: relative; - -} - -.form-check{ - padding-left: 0; - .form-check-label{ - display: inline-block; - position: relative; - cursor: pointer; - padding-left: 35px; - line-height: 26px; - margin-bottom: 0; - } - - .form-check-sign::before, - .form-check-sign::after{ - font-family: 'FontAwesome'; - content: "\f096"; - display: inline-block; - color: $info-color; - position: absolute; - width: 19px; - height: 19px; - margin-top: -12px; - margin-left: -23px; - font-size: 21px; - cursor: pointer; - -webkit-transition: opacity 0.3s linear; - -moz-transition: opacity 0.3s linear; - -o-transition: opacity 0.3s linear; - -ms-transition: opacity 0.3s linear; - transition: opacity 0.3s linear; - } - .form-check-sign::after{ - font-family: 'FontAwesome'; - content: "\f046"; - text-align: center; - opacity: 0; - color: $info-color; - border: 0; - background-color: inherit; - } - &.disabled{ - .form-check-label{ - color: $dark-gray; - opacity: .5; - cursor: not-allowed; - } - } - -} - -.form-check.disabled .form-check-label, -.form-check.disabled .form-check-label { - -} - -.form-check input[type="checkbox"], -.form-check-radio input[type="radio"]{ - opacity: 0; - position: absolute; - visibility: hidden; -} -.form-check input[type="checkbox"]:checked + .form-check-sign::after{ - opacity: 1; -} - -.form-control input[type="checkbox"]:disabled + .form-check-sign::before, -.checkbox input[type="checkbox"]:disabled + .form-check-sign::after{ - cursor: not-allowed; -} - -.form-check .form-check-label input[type="checkbox"]:disabled + .form-check-sign, -.form-check-radio input[type="radio"]:disabled + .form-check-sign{ - pointer-events: none !important; -} - -.form-check-radio{ - .form-check-label{ - padding-left: 2rem; - } - &.disabled{ - .form-check-label{ - color: $dark-gray; - opacity: .5; - cursor: not-allowed; - } - } -} - -.form-check-radio .form-check-sign::before{ - font-family: 'FontAwesome'; - content: "\f10c"; - font-size: 22px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - display: inline-block; - position: absolute; - opacity: .50; - left: 5px; - top: -5px; -} - -.form-check-label input[type="checkbox"]:checked + .form-check-sign:before{ - // background-color: #66615B; -} - -.form-check-radio input[type="radio"] + .form-check-sign:after, -.form-check-radio input[type="radio"] { - opacity: 0; - -webkit-transition: opacity 0.3s linear; - -moz-transition: opacity 0.3s linear; - -o-transition: opacity 0.3s linear; - -ms-transition: opacity 0.3s linear; - transition: opacity 0.3s linear; - content:" "; - display: block; -} - -.form-check-radio input[type="radio"]:checked + .form-check-sign::after { - font-family: 'FontAwesome'; - content: "\f192"; - top: -5px; - position: absolute; - left: 5px; - opacity: 1; - font-size: 22px; -} - -.form-check-radio input[type="radio"]:checked + .form-check-sign::after{ - opacity: 1; -} - - -.form-check-radio input[type="radio"]:disabled + .form-check-sign::before, -.form-check-radio input[type="radio"]:disabled + .form-check-sign::after { - color: $dark-gray; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_checkbox-radio-switch.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss deleted file mode 100644 index 8dd6aca..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss +++ /dev/null @@ -1,137 +0,0 @@ -.dropdown-menu{ - visibility: hidden; - margin: 0; - padding: 0; - border-radius: $border-radius-extreme; - display: block; - z-index: 9000; - position: absolute; - - @include opacity(0); - @include box-shadow($dropdown-shadow); - - .show &{ - @include opacity(1); - visibility: visible; - transform: translate3d(0px, 0px, 0px) !important; - } - .select &{ - border-radius: $border-radius-bottom; - @include box-shadow(none); - @include transform-origin($select-coordinates); - @include transform-scale(1); - @include transition($fast-transition-time, $transition-linear); - margin-top: -20px; - } - .select.show &{ - margin-top: -1px; - } - - .dropdown-item { - padding: $padding-base-vertical $padding-base-horizontal; - color: #333333; - - img{ - margin-top: -3px; - } - } - .dropdown-item:focus{ - outline: 0 !important; - } - - .btn-group.select &{ - min-width: 100%; - } - - > li:first-child > a{ - border-top-left-radius: $border-radius-extreme; - border-top-right-radius: $border-radius-extreme; - } - - > li:last-child > a{ - border-bottom-left-radius: $border-radius-extreme; - border-bottom-right-radius: $border-radius-extreme; - } - - .select & > li:first-child > a{ - border-radius: 0; - border-bottom: 0 none; - } - - .dropdown-item:hover, - .dropdown-item:focus { - background-color: $smoke-bg; - color: #333333; - opacity: 1; - text-decoration: none; - } - - &.dropdown-blue > li > a:hover, - &.dropdown-blue > li > a:focus{ - background-color: $light-blue; - } - &.dropdown-azure > li > a:hover, - &.dropdown-azure > li > a:focus{ - background-color: $light-azure; - } - &.ct-green > li > a:hover, - &.ct-green > li > a:focus{ - background-color: $light-green; - } - &.dropdown-orange > li > a:hover, - &.dropdown-orange > li > a:focus{ - background-color: $light-orange; - } - &.dropdown-red > li > a:hover, - &.dropdown-red > li > a:focus{ - background-color: $light-red; - } - - .dropdown-item{ - i[class*="nc-icon"]{ - font-size: 18px; - text-align: center; - line-height: 25px; - float: left; - padding-right: 10px; - } - } - - &.dropdown-menu-right{ - &:before, - &:after{ - right: 12px !important; - left: auto !important; - } - } - -} - -.dropdown-with-icons{ - > li > a{ - padding-left: 0px; - line-height: 28px; - } - i{ - text-align: center; - line-height: 28px; - float: left; - - &[class^="pe-"]{ - font-size: 24px; - width: 46px; - } - &[class^="fa"]{ - font-size: 14px; - width: 38px; - } - } -} - -//fix bug for the select items in btn-group -.btn-group.select{ - overflow: hidden; -} -.btn-group.select.show{ - overflow: visible; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_dropdown.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss deleted file mode 100644 index 7ea2ee1..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss +++ /dev/null @@ -1,75 +0,0 @@ -.footer{ - background-color: $white-color; - - .footer-menu{ - height: 41px; - } - - nav > ul{ - list-style: none; - margin: 0; - padding: 0; - font-weight: normal; - - a:not(.btn){ - color: $dark-gray; - display: block; - margin-bottom: 3px; - &:hover, - &:focus{ - color: $default-states-color; - } - } - } - .social-area{ - padding: 15px 0; - h5{ - padding-bottom: 15px; - } - } - .social-area > a:not(.btn){ - color: $dark-gray; - display: inline-block; - vertical-align: top; - padding: $padding-social-a; - font-size: $font-size-large-navbar; - font-weight: normal; - line-height: $line-height; - text-align: center; - &:hover, - &:focus{ - color: $default-states-color; - } - } - .copyright{ - color: $default-states-color; - padding: 10px 15px; - margin: 10px 3px; - line-height: 20px; - font-size: $font-size-base; - } - hr{ - border-color: $medium-gray; - } - .title{ - color: $default-states-color; - } -} - -.footer-default{ - background-color: $smoke-bg; -} - -.footer:not(.footer-big){ - nav > ul{ - font-size: $font-size-base; - li{ - margin-left: 20px; - float: left; - } - a{ - padding: 10px 0px; - margin: 10px 10px 10px 0px; - } - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_footers.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss deleted file mode 100644 index 2b9820a..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss +++ /dev/null @@ -1,141 +0,0 @@ -.form-control::-moz-placeholder{ - @include placeholder($medium-gray,1); -} -.form-control:-moz-placeholder{ - @include placeholder($medium-gray,1); -} -.form-control::-webkit-input-placeholder{ - @include placeholder($medium-gray,1); -} -.form-control:-ms-input-placeholder{ - @include placeholder($medium-gray,1); -} - -.form-control { - background-color: $white-bg; - border: 1px solid $light-gray; - border-radius: $border-radius-base; - color: #565656; - @include input-size($padding-base-vertical, $padding-base-horizontal - 4, $height-base); - @include box-shadow(none); - - &:focus{ - background-color: $white-bg; - border: 1px solid $medium-dark-gray; - @include box-shadow(none); - outline: 0 !important; - color: #333333; - } - - .has-success &, - .has-error &, - .has-success &:focus, - .has-error &:focus{ - border-color: $light-gray; - @include box-shadow(none); - } - - .has-success &{ - color: $success-color; - } - .has-success &:focus{ - border-color: $success-color; - } - .has-error &{ - color: $danger-color; - } - .has-error &:focus{ - border-color: $danger-color; - } - - & + .form-control-feedback{ - border-radius: $border-radius-large; - font-size: $font-size-base; - margin-top: -7px; - position: absolute; - right: 10px; - top: 50%; - vertical-align: middle; - } - - .open &{ - border-radius: $border-radius-base $border-radius-base 0 0; - border-bottom-color: transparent; - } -} - -.input-lg{ - height: 55px; - padding: $padding-large-vertical $padding-large-horizontal; -} - -.has-error{ - .form-control-feedback{ - color: $danger-color; - } -} -.has-success{ - .form-control-feedback{ - color: $success-color - } -} - - -.input-group-addon { - background-color: $white-color; - border: 1px solid $light-gray; - border-radius: $border-radius-base; - - .has-success &, - .has-error &{ - background-color: $white-color; - border: 1px solid $light-gray; - } - .has-error .form-control:focus + &{ - border-color: $danger-color; - color: $danger-color; - } - .has-success .form-control:focus + &{ - border-color: $success-color; - color: $success-color; - } - .form-control:focus + &, - .form-control:focus ~ &{ - background-color: $white-color; - border-color: $dark-gray; - } -} - -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { - border-right: 0 none; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child) { - border-left: 0 none; -} -.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { - background-color: $smoke-bg; - color: $default-color; - cursor: not-allowed; -} - -.input-group-btn .btn{ - border-width: $border-thin; - padding: $padding-round-vertical $padding-base-horizontal; -} -.input-group-btn .btn-default:not(.btn-fill){ - border-color: $medium-gray; -} - -.input-group-btn:last-child > .btn{ - margin-left: 0; -} - -.input-group-focus .input-group-addon{ - border-color: $dark-gray; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_inputs.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss deleted file mode 100644 index c8e53ed..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* General overwrite */ -body, -.wrapper{ - min-height: 100vh; - position: relative; -} -a{ - color: $info-color; - - &:hover, &:focus{ - color: $info-states-color; - text-decoration: none; - } -} - -a:focus, a:active, -button::-moz-focus-inner, -input::-moz-focus-inner, -input[type="reset"]::-moz-focus-inner, -input[type="button"]::-moz-focus-inner, -input[type="submit"]::-moz-focus-inner, -select::-moz-focus-inner, -input[type="file"] > input[type="button"]::-moz-focus-inner{ - outline:0; -} -.ui-slider-handle:focus, -.navbar-toggle, -input:focus { - outline : 0 !important; -} - -/* Animations */ -.form-control, -.input-group-addon, -.tagsinput, -.navbar, -.navbar .alert{ - @include transition($general-transition-time, $transition-linear); -} - -.sidebar .nav a, -.table > tbody > tr .td-actions .btn{ - @include transition($fast-transition-time, $transition-ease-in); -} - -.btn{ - @include transition($ultra-fast-transition-time, $transition-ease-in); -} -.fa{ - width: 18px; - text-align: center; -} -.margin-top{ - margin-top: 50px; -} - -.wrapper{ - position: relative; - top: 0; - height: 100vh; -} - -// documentation - -.page-header{ - .page-header-image{ - background-position: center center; - background-size: cover; - overflow: hidden; - width: 100%; - z-index: 1; - } - .title-container{ - color: #fff; - position: relative; - top: 250px; - z-index: 3; - } - .filter:after{ - background: rgba(0, 0, 0, 0) linear-gradient(to bottom, #9368e9 0%, #943bea 100%) repeat scroll 0 0 / 150% 150%; - content: ""; - display: block; - height: 100%; - left: 0; - opacity: 0.77; - position: absolute; - top: 0; - width: 100%; - z-index: 2; - } -} - -.documentation .page-header, -.documentation .page-header-image, -.documentation .page-header-image .filter:after{ - height: 100vh; -} - -.documentation .footer{ - z-index: 3; -} -.documentation .wrapper{ - margin-top: -61px; - height: 100vh; -} -.documentation .navbar{ - z-index: 21; -} - -.card-tasks{ - .card-body{ - .table{ - td{ - font-size: 14px; - - .btn{ - font-size: 14px; - } - .btn-info{ - margin-top: 3px; - padding-right: 0; - } - } - td:last-child{ - padding-right: 0; - } - } - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_misc.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss deleted file mode 100644 index 33a9fff..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss +++ /dev/null @@ -1,22 +0,0 @@ -//Utilities - -@import "mixins/transparency"; -@import "mixins/vendor-prefixes"; - - -//Components - -@import "mixins/buttons"; -@import "mixins/inputs"; -@import "mixins/labels"; -@import "mixins/tabs"; - -@import "mixins/navbars"; -@import "mixins/icons"; -@import "mixins/social-buttons"; - -@import "mixins/morphing-buttons"; - -@import "mixins/cards"; - -@import "mixins/chartist"; \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_mixins.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss deleted file mode 100644 index 6d0f447..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss +++ /dev/null @@ -1,379 +0,0 @@ -.nav { - .nav-item{ - .nav-link:hover, - .nav-link:focus{ - background-color: transparent; - } - } - -} -.navbar{ - border: $none; - font-size: $font-size-navbar; - border-radius: 0; - min-height: 50px; - background-color: $white-navbar; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - padding: 5px 15px; - - .navbar-brand { - font-weight: 400; - margin: 5px 0px; - font-size: 20px; - color: $default-color; - - &:hover{ - color: #5e5e5e; - } - } - .navbar-toggler{ - width: 37px; - height: 27px; - vertical-align: middle; - outline: 0; - cursor: pointer; - - &.navbar-toggler-left{ - position: relative; - left: 0; - padding-left: 0; - } - - & .navbar-toggler-bar{ - width: 3px; - height: 3px; - border-radius: 50%; - margin: 0 auto; - } - .burger-lines{ - display: block; - position: relative; - background-color: #888; - width: 24px; - height: 2px; - border-radius: 1px; - margin: 4px auto; - } - } - - .dropdown.nav-item{ - .dropdown-toggle:after{ - margin-top: 8px; - } - } - - .navbar-nav{ - align-items: center; - - .nav-item{ - .nav-link{ - color: $default-color; - padding: $navbar-padding-a; - position: relative; - display: inline-flex; - line-height: 1.2; - - &.btn{ - margin: $navbar-margin-a-btn; - padding: $padding-base-vertical $padding-base-horizontal; - } - - &.btn-round{ - margin: $navbar-margin-a-btn-round; - } - - [class^="fa"]{ - font-size: $font-size-large + 1; - position: relative; - line-height: 40px; - top: 1px; - } - - &:hover{ - color: $info-color; - } - } - - .dropdown-menu{ - border-radius: $border-radius-extreme; - margin-top: -5px; - - .dropdown-item{ - &:first-child{ - border-top-left-radius: 10px; - border-top-right-radius: 10px; - } - &:last-child{ - border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; - } - } - - .divider{ - height: 1px; - margin: 5px 0; - overflow: hidden; - background-color: #e5e5e5; - } - } - } - - .notification{ - position: absolute; - background-color: #FB404B; - text-align: center; - border-radius: 10px; - min-width: 18px; - padding: 0 5px; - height: 18px; - font-size: 12px; - color: $white-color; - font-weight: bold; - line-height: 18px; - top: 0; - left: 7px; - } - - .dropdown-toggle:after{ - display: inline-block; - width: 0; - height: 0; - margin-left: 5px; - margin-top: 12px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid\9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - } - - - } - .btn{ - margin: $navbar-margin-btn; - font-size: $font-size-base; - } - .btn-simple{ - font-size: $font-size-medium; - } - - &.fixed{ - width: calc(100% - #{$sidebar-width}); - right: 0; - left: auto; - border-radius: 0; - } - - .nc-icon{ - font-weight: 700; - } -} - -.navbar-transparent, [class*="navbar-ct"]{ - .navbar-brand{ - color: $white-color; - @include opacity(.9); - - &:focus, - &:hover{ - background-color: transparent; - @include opacity(1); - color: $white-color; - } - } - - .navbar-nav{ - .nav-item{ - .nav-link:not(.btn){ - color: $white-color; - border-color: $white-color; - @include opacity(0.8); - } - } - - .active, - .nav-item{ - .nav-link:not(.btn), - .nav-link:hover:not(.btn), - .nav-link:focus:not(.btn) { - background-color: transparent; - border-radius: 3px; - color: $white-color; - @include opacity(1); - } - } - - .nav .nav-item .nav-link.btn:hover{ - background-color: transparent; - } - - .show{ - .nav-link, - .nav-link:hover, - .nav-link:focus{ - background-color: transparent; - color: $white-color; - @include opacity(1); - } - } - } - - .btn-default{ - color: $white-color; - border-color: $white-color; - } - .btn-default.btn-fill{ - color: $dark-gray; - background-color: $white-color; - @include opacity(.9); - } - .btn-default.btn-fill:hover, - .btn-default.btn-fill:focus, - .btn-default.btn-fill:active, - .btn-default.btn-fill.active, - .show .dropdown-toggle.btn-fill.btn-default{ - border-color: $white-color; - @include opacity(1); - } - -} -.navbar-transparent{ - .dropdown-menu .divider{ - background-color: rgba($white-color,.2); - } -} - - -.navbar-default { - background-color: $white-navbar; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - - .navbar-nav{ - .nav-item{ - .nav-link:not(.btn){ - color: $dark-gray; - } - } - - .active .nav-link, - .active .nav-link:not(.btn):hover, - .active .nav-link:not(.btn):focus, - .nav-item .nav-link:not(.btn):hover, - .nav-item .nav-link:not(.btn):focus{ - background-color: transparent; - border-radius: 3px; - color: $info-color; - @include opacity(1); - } - - .show{ - .nav-link, - .nav-link:hover, - .nav-link:focus{ - background-color: transparent; - color: $info-color; - } - } - - - .navbar-toggle:hover,.navbar-toggle:focus { - background-color: transparent; - } - - } - - &:not(.navbar-transparent) .btn-default:hover{ - color: $info-color; - border-color: $info-color; - } - &:not(.navbar-transparent) .btn-neutral, - &:not(.navbar-transparent) .btn-neutral:hover, - &:not(.navbar-transparent) .btn-neutral:active{ - color: $dark-gray; - } -} - -/* Navbar with icons */ - -.navbar-icons{ - &.navbar .navbar-brand{ - margin-top: 12px; - margin-bottom: 12px; - } - .navbar-nav{ - .nav-item{ - .nav-link{ - text-align: center; - padding: $navbar-padding-a-icons; - margin: $navbar-margin-a-icons; - } - } - - [class^="pe"] { - font-size: 30px; - position: relative; - } - p { - margin: 3px 0 0; - } - } -} - -.navbar-form{ - @include box-shadow(none); - .form-control{ - @include light-form(); - height: 22px; - font-size: $font-size-navbar; - line-height: $line-height-general; - color: $light-gray; - } - .navbar-transparent & .form-control, - [class*="navbar-ct"] & .form-control{ - color: $white-color; - border: $none; - border-bottom: 1px solid rgba($white-color,.6); - } - -} - -.navbar-ct-blue{ - @include navbar-color($blue-navbar); -} -.navbar-ct-azure{ - @include navbar-color($azure-navbar); -} -.navbar-ct-green{ - @include navbar-color($green-navbar); -} -.navbar-ct-orange{ - @include navbar-color($orange-navbar); -} -.navbar-ct-red{ - @include navbar-color($red-navbar); -} - -.navbar-transparent{ - padding-top: 15px; - background-color: transparent; - border-bottom: 1px solid transparent; -} - -.navbar-toggle{ - margin-top: 19px; - margin-bottom: 19px; - border: $none; - - .icon-bar { - background-color: $white-color; - } - .navbar-collapse, - .navbar-form { - border-color: transparent; - } - - &.navbar-default .navbar-toggle:hover, - &.navbar-default .navbar-toggle:focus { - background-color: transparent; - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_navbars.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss deleted file mode 100644 index d03a87d..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss +++ /dev/null @@ -1,577 +0,0 @@ -/*-------------------------------- - -nucleo-icons Web Font - built using nucleoapp.com -License - nucleoapp.com/license/ - --------------------------------- */ -@font-face { - font-family: 'nucleo-icons'; - src: url('~@/assets/fonts/nucleo-icons.eot'); - src: url('~@/assets/fonts/nucleo-icons.eot') format('embedded-opentype'), - url('~@/assets/fonts/nucleo-icons.woff2') format('woff2'), - url('~@/assets/fonts/nucleo-icons.ttf') format('truetype'), - url('~@/assets/fonts/nucleo-icons.svg') format('svg'); - font-weight: normal; - font-style: normal; -} -/*------------------------ - base class definition --------------------------*/ -.nc-icon { - display: inline-block; - font: normal normal normal 14px/1 'nucleo-icons'; - font-size: inherit; - speak: none; - text-transform: none; - /* Better Font Rendering */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/*------------------------ - change icon size --------------------------*/ -.nc-icon.lg { - font-size: 1.33333333em; - vertical-align: -16%; -} -.nc-icon.x2 { - font-size: 2em; -} -.nc-icon.x3 { - font-size: 3em; -} -/*---------------------------------- - add a square/circle background ------------------------------------*/ -.nc-icon.square, -.nc-icon.circle { - padding: 0.33333333em; - vertical-align: -16%; - background-color: #eee; -} -.nc-icon.circle { - border-radius: 50%; -} -/*------------------------ - list icons --------------------------*/ -.nc-icon-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.nc-icon-ul > li { - position: relative; -} -.nc-icon-ul > li > .nc-icon { - position: absolute; - left: -1.57142857em; - top: 0.14285714em; - text-align: center; -} -.nc-icon-ul > li > .nc-icon.lg { - top: 0; - left: -1.35714286em; -} -.nc-icon-ul > li > .nc-icon.circle, -.nc-icon-ul > li > .nc-icon.square { - top: -0.19047619em; - left: -1.9047619em; -} - -.all-icons{ - .font-icon-list{ - .font-icon-detail i{ - font-size: 32px; - } - } -} -/*------------------------ - spinning icons --------------------------*/ -.nc-icon.spin { - -webkit-animation: nc-icon-spin 2s infinite linear; - -moz-animation: nc-icon-spin 2s infinite linear; - animation: nc-icon-spin 2s infinite linear; -} -@-webkit-keyframes nc-icon-spin { - 0% { - -webkit-transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - } -} -@-moz-keyframes nc-icon-spin { - 0% { - -moz-transform: rotate(0deg); - } - 100% { - -moz-transform: rotate(360deg); - } -} -@keyframes nc-icon-spin { - 0% { - -webkit-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -ms-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -ms-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} -/*------------------------ - rotated/flipped icons --------------------------*/ -.nc-icon.rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); -} -.nc-icon.rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); -} -.nc-icon.rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); -} -.nc-icon.flip-y { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.nc-icon.flip-x { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} -/*------------------------ - font icons --------------------------*/ - -.nc-air-baloon::before { - content: "\ea01"; -} - -.nc-album-2::before { - content: "\ea02"; -} - -.nc-alien-33::before { - content: "\ea03"; -} - -.nc-align-center::before { - content: "\ea04"; -} - -.nc-align-left-2::before { - content: "\ea05"; -} - -.nc-ambulance::before { - content: "\ea06"; -} - -.nc-android::before { - content: "\ea07"; -} - -.nc-app::before { - content: "\ea08"; -} - -.nc-apple::before { - content: "\ea09"; -} - -.nc-atom::before { - content: "\ea0a"; -} - -.nc-attach-87::before { - content: "\ea0b"; -} - -.nc-audio-92::before { - content: "\ea0c"; -} - -.nc-backpack::before { - content: "\ea0d"; -} - -.nc-badge::before { - content: "\ea0e"; -} - -.nc-bag::before { - content: "\ea0f"; -} - -.nc-bank::before { - content: "\ea10"; -} - -.nc-battery-81::before { - content: "\ea11"; -} - -.nc-bell-55::before { - content: "\ea12"; -} - -.nc-bold::before { - content: "\ea13"; -} - -.nc-bulb-63::before { - content: "\ea14"; -} - -.nc-bullet-list-67::before { - content: "\ea15"; -} - -.nc-bus-front-12::before { - content: "\ea16"; -} - -.nc-button-pause::before { - content: "\ea17"; -} - -.nc-button-play::before { - content: "\ea18"; -} - -.nc-button-power::before { - content: "\ea19"; -} - -.nc-camera-20::before { - content: "\ea1a"; -} - -.nc-caps-small::before { - content: "\ea1b"; -} - -.nc-cart-simple::before { - content: "\ea1c"; -} - -.nc-cctv::before { - content: "\ea1d"; -} - -.nc-chart-bar-32::before { - content: "\ea1e"; -} - -.nc-chart-pie-35::before { - content: "\ea1f"; -} - -.nc-chart-pie-36::before { - content: "\ea20"; -} - -.nc-chart::before { - content: "\ea21"; -} - -.nc-chat-round::before { - content: "\ea22"; -} - -.nc-check-2::before { - content: "\ea23"; -} - -.nc-circle-09::before { - content: "\ea24"; -} - -.nc-circle::before { - content: "\ea25"; -} - -.nc-cloud-download-93::before { - content: "\ea26"; -} - -.nc-cloud-upload-94::before { - content: "\ea27"; -} - -.nc-compass-05::before { - content: "\ea28"; -} - -.nc-controller-modern::before { - content: "\ea29"; -} - -.nc-credit-card::before { - content: "\ea2a"; -} - -.nc-delivery-fast::before { - content: "\ea2b"; -} - -.nc-email-83::before { - content: "\ea2c"; -} - -.nc-email-85::before { - content: "\ea2d"; -} - -.nc-explore-2::before { - content: "\ea2e"; -} - -.nc-fav-remove::before { - content: "\ea2f"; -} - -.nc-favourite-28::before { - content: "\ea30"; -} - -.nc-globe-2::before { - content: "\ea31"; -} - -.nc-grid-45::before { - content: "\ea32"; -} - -.nc-headphones-2::before { - content: "\ea33"; -} - -.nc-html5::before { - content: "\ea34"; -} - -.nc-istanbul::before { - content: "\ea35"; -} - -.nc-key-25::before { - content: "\ea36"; -} - -.nc-layers-3::before { - content: "\ea37"; -} - -.nc-light-3::before { - content: "\ea38"; -} - -.nc-lock-circle-open::before { - content: "\ea39"; -} - -.nc-map-big::before { - content: "\ea3a"; -} - -.nc-mobile::before { - content: "\ea3c"; -} - -.nc-money-coins::before { - content: "\ea3b"; -} - -.nc-note-03::before { - content: "\ea3d"; -} - -.nc-notes::before { - content: "\ea3e"; -} - -.nc-notification-70::before { - content: "\ea3f"; -} - -.nc-palette::before { - content: "\ea40"; -} - -.nc-paper-2::before { - content: "\ea41"; -} - -.nc-pin-3::before { - content: "\ea42"; -} - -.nc-planet::before { - content: "\ea43"; -} - -.nc-preferences-circle-rotate::before { - content: "\ea44"; -} - -.nc-puzzle-10::before { - content: "\ea45"; -} - -.nc-quote::before { - content: "\ea46"; -} - -.nc-refresh-02::before { - content: "\ea47"; -} - -.nc-ruler-pencil::before { - content: "\ea48"; -} - -.nc-satisfied::before { - content: "\ea49"; -} - -.nc-scissors::before { - content: "\ea4a"; -} - -.nc-send::before { - content: "\ea4b"; -} - -.nc-settings-90::before { - content: "\ea4c"; -} - -.nc-settings-gear-64::before { - content: "\ea4d"; -} - -.nc-settings-tool-66::before { - content: "\ea4e"; -} - -.nc-simple-add::before { - content: "\ea4f"; -} - -.nc-simple-delete::before { - content: "\ea50"; -} - -.nc-simple-remove::before { - content: "\ea51"; -} - -.nc-single-02::before { - content: "\ea52"; -} - -.nc-single-copy-04::before { - content: "\ea53"; -} - -.nc-spaceship::before { - content: "\ea54"; -} - -.nc-square-pin::before { - content: "\ea55"; -} - -.nc-stre-down::before { - content: "\ea56"; -} - -.nc-stre-left::before { - content: "\ea57"; -} - -.nc-stre-right::before { - content: "\ea58"; -} - -.nc-stre-up::before { - content: "\ea59"; -} - -.nc-sun-fog-29::before { - content: "\ea5a"; -} - -.nc-support-17::before { - content: "\ea5b"; -} - -.nc-tablet-2::before { - content: "\ea5c"; -} - -.nc-tag-content::before { - content: "\ea5d"; -} - -.nc-tap-01::before { - content: "\ea5e"; -} - -.nc-time-alarm::before { - content: "\ea5f"; -} - -.nc-tv-2::before { - content: "\ea60"; -} - -.nc-umbrella-13::before { - content: "\ea61"; -} - -.nc-vector::before { - content: "\ea62"; -} - -.nc-watch-time::before { - content: "\ea63"; -} - -.nc-zoom-split::before { - content: "\ea64"; -} - - -/* all icon font classes list here */ diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_partial-nucleo-icons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss deleted file mode 100644 index 9dc2764..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss +++ /dev/null @@ -1,479 +0,0 @@ -@media (min-width: 992px){ - .navbar-form { - margin-top: 21px; - margin-bottom: 21px; - padding-left: 5px; - padding-right: 5px; - } - .navbar-nav .nav-item .dropdown-menu, .dropdown .dropdown-menu{ - @include transform-scale(0); - @include transition($slow-transition-time, $transition-bezier); - } - .navbar-nav .nav-item.show .dropdown-menu, .dropdown.show .dropdown-menu{ - @include transform-scale(1); - @include transform-origin($dropdown-coordinates); - - } - .close-layer, - .nav-mobile-menu{ - display: none !important; - } - - .footer{ - height: 60px; - .footer-menu{ - float: left; - } - .copyright{ - float: right; - } - } - .navbar-nav .nav-item .dropdown-menu:before{ - border-bottom: 11px solid rgba(0, 0, 0, 0.2); - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - content: ""; - display: inline-block; - position: absolute; - left: 12px; - top: -11px; - } - .navbar-nav .nav-item .dropdown-menu:after { - border-bottom: 11px solid #FFFFFF; - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - content: ""; - display: inline-block; - position: absolute; - left: 12px; - top: -10px; - } - - .navbar-nav.navbar-right .nav-item .dropdown-menu:before{ - left: auto; - right: 12px; - } - - .navbar-nav.navbar-right .nav-item .dropdown-menu:after{ - left: auto; - right: 12px; - } - - .footer:not(.footer-big){ - nav > ul{ - li:first-child{ - margin-left: 0; - } - } - } - - .card{ - form{ - [class*="col-"]{ - padding: 6px; - } - [class*="col-"]:first-child{ - padding-left: 15px; - } - [class*="col-"]:last-child{ - padding-right: 15px; - } - } - } -} - -/* Changes for small display */ - -@media (max-width: 991px){ - - .sidebar{ - right: 0 !important; - left: auto; - position: fixed; - @include transform-translate-3d(262px); - @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - } - - .nav-open{ - .main-panel{ - position: absolute; - left: 0; - @include transform-translate-3d(-250px); - @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - } - - .sidebar{ - @include transform-translate-3d(10px); - @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - } - } - - .main-panel{ - @include transform-translate-3d(0px); - @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - } - - - .nav-item.active-pro{ - position: relative !important; - } - - .nav-mobile-menu{ - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - margin-bottom: 15px; - padding-bottom: 15px; - padding-top: 5px; - - .dropdown{ - .dropdown-menu{ - position: static !important; - float: none; - width: auto; - color: $white-color; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - @include transition (0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - - .dropdown-item{ - margin: 5px 15px 0px 40px; - border-radius: 4px; - color: $white-color; - opacity: .86; - padding: 8px 50px; - &:hover{ - background-color: rgba(255, 255, 255, 0.23) - } - } - } - - } - .nav-item{ - .nav-link{ - span{ - display: inline-block !important; - } - .no-icon{ - padding-left: 50px; - } - } - } - } - .main-panel{ - width: 100%; - } - - .navbar-transparent{ - padding-top: 15px; - background-color: rgba(0, 0, 0, 0.45); - } - body { - position: relative; - } - .wrapper{ - left: 0; - background-color: white; - } - - .navbar{ - padding-right: 30px; - padding-left: 30px; - } - - .navbar-nav{ - .nav-item{ - float: none; - position: relative; - display: block; - } - } - - body > .navbar-collapse { - position: fixed; - display: block; - top: 0; - height: 100%; - right: 0; - left: auto; - z-index: 1032; - visibility: visible; - background-color: #999; - overflow-y: visible; - border-top: none; - text-align: left; - padding: 0; - - @include transform-translate-x(260px); - @include transition (0.33s, cubic-bezier(0.685, 0.0473, 0.346, 1)); - > ul { - position: relative; - z-index: 4; - overflow-y:scroll; - height: calc(100vh - 61px); - width: 100%; - } - - &::before{ - top: 0; - left: 0; - height: 100%; - width: 100%; - position: absolute; - background-color: #282828; - display: block; - content: ""; - z-index: 1; - } - - .logo{ - position: relative; - z-index: 4; - } - - .nav li > a{ - padding: 10px 15px; - } - } - .nav-show .navbar-collapse{ - @include transform-translate-x(0px); - } - .nav-show .navbar .container{ - left: -250px; - } - .nav-show .wrapper{ - left: 0; - @include transform-translate-x(-260px); - } - .navbar-toggle .icon-bar { - display: block; - position: relative; - background: #fff; - width: 24px; - height: 2px; - border-radius: 1px; - margin: 0 auto; - } - - .navbar-header .navbar-toggle { - margin: 10px 15px 10px 0; - width: 40px; - height: 40px; - } - .bar1, - .bar2, - .bar3 { - outline: 1px solid transparent; - } - .bar1 { - top: 0px; - @include bar-animation($topbar-back); - } - .bar2 { - opacity: 1; - } - .bar3 { - bottom: 0px; - @include bar-animation($bottombar-back); - } - .toggled .bar1 { - top: 6px; - @include bar-animation($topbar-x); - } - .toggled .bar2 { - opacity: 0; - } - .toggled .bar3 { - bottom: 6px; - @include bar-animation($bottombar-x); - } - - @include topbar-x-rotation(); - @include topbar-back-rotation(); - @include bottombar-x-rotation(); - @include bottombar-back-rotation(); - - @-webkit-keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} - } - @-moz-keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} - } - @keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} - } - - .dropdown-menu .divider{ - background-color: rgba(229, 229, 229, 0.15); - } - - .navbar-nav { - margin: 1px 0; - - .show .dropdown-menu .nav-item{ - .nav-link{ - padding: 10px 15px 10px 60px; - } - } - } - - [class*="navbar-"] .navbar-nav { - & > li > a, - > li > a:hover, - > li > a:focus, - .active > a, - .active > a:hover, - .active > a:focus, - .show .dropdown-menu > li > a, - .show .dropdown-menu > li > a:hover, - .show .dropdown-menu > li > a:focus, - .show .dropdown-menu > li > a:active { - color: white; - } - - & > li > a, - > li > a:hover, - > li > a:focus{ - opacity: .7; - background-color: transparent; - outline: none; - } - - .show .dropdown-menu > li > a:hover, - .show .dropdown-menu > li > a:focus{ - background-color: rgba(255,255,255, .1); - } - - - - &.navbar-nav .show .dropdown-menu > li > a:active { - opacity: 1; - } - - & .dropdown > a{ - &:hover .caret { - border-bottom-color: #fff; - border-top-color: #fff; - } - &:active .caret { - border-bottom-color: white; - border-top-color: white; - } - } - - } - - .dropdown-menu { - display: none; - } - .navbar-fixed-top { - -webkit-backface-visibility: hidden; - } - #bodyClick { - height: 100%; - width: 100%; - position: fixed; - opacity: 0; - top: 0; - left: auto; - right: 250px; - content: ""; - z-index: 9999; - overflow-x: hidden; - } - - .social-line .btn{ - margin: $margin-bottom; - } - .subscribe-line .form-control{ - margin: $margin-bottom; - } - .social-line.pull-right{ - float: none; - } - .social-area.pull-right{ - float: none !important; - } - .form-control + .form-control-feedback{ - margin-top: -8px; - } - .navbar-toggle:hover,.navbar-toggle:focus { - background-color: transparent !important; - } - .btn.dropdown-toggle{ - margin-bottom: 0; - } - .media-post .author{ - width: 20%; - float: none !important; - display: block; - margin: 0 auto 10px; - } - .media-post .media-body{ - width: 100%; - } - - .navbar-collapse.collapse{ - height: 100% !important; - } - .navbar-collapse.collapse.in { - display: block; - } - .navbar-header .collapse, .navbar-toggle { - display:block !important; - } - .navbar-header { - float:none; - } - .navbar-nav .show .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse{ - .navbar-nav p{ - line-height: 40px !important; - margin: 0; - } - - [class^="pe-7s-"]{ - float: left; - font-size: 20px; - margin-right: 10px; - } - } -} - -//overwrite table responsive for 768px screens - -@media (min-width: 992px){ - .table-full-width{ - margin-left: -15px; - margin-right: -15px; - } - .table-responsive{ - overflow: visible; - } - -} - -@media (max-width: 991px){ - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-x: scroll; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - -webkit-overflow-scrolling: touch; - } - -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_responsive.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss deleted file mode 100644 index bd64f52..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss +++ /dev/null @@ -1,455 +0,0 @@ -.sidebar, -body > .navbar-collapse{ - position: fixed; - height: 100vh; - top: 0; - bottom: 0; - left: 0; - width: 260px; - display: block; - z-index: 1; - color: #fff; - font-weight: 200; - background-size: cover; - background-position: center center; - - .sidebar-wrapper{ - position: relative; - max-height: calc(100vh - 75px); - min-height: 100%; - overflow: auto; - width: 260px; - z-index: 4; - padding-bottom: 20px; - } - - .sidebar-background{ - position: absolute; - z-index: 1; - height: 100%; - width: 100%; - display: block; - top: 0; - left: 0; - background-size: cover; - background-position: center center; - } - - .logo{ - padding: 10px 15px 9px 15px; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - position: relative; - z-index: 4; - - p{ - float: left; - font-size: 20px; - margin: 10px 10px; - color: $white-color; - line-height: 20px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .simple-text{ - text-transform: uppercase; - padding: $padding-small-vertical $padding-zero; - font-size: $font-size-large; - color: $white-color; - text-align: center; - font-weight: $font-weight-normal; - line-height: 30px; - display: flex; - align-items: center; - - .logo-img{ - width: 40px; - display: inline-flex; - justify-content: center; - align-items: center; - height: 40px; - margin-left: 0px; - margin-right: 10px; - background: white; - border-radius: 40px; - - img{ - max-width: 21px; - } - } - } - } - - .logo-tim{ - border-radius: 50%; - border: 1px solid #333; - display: block; - height: 61px; - width: 61px; - float: left; - overflow: hidden; - - img{ - width: 60px; - height: 60px; - } - } - - .nav{ - margin-top: 20px; - float: none; - display: block; - - li{ - .nav-link{ - color: $white-color; - margin: 5px 15px; - opacity: .86; - border-radius: 4px; - display: block; - padding: 10px 15px; - - &:hover{ - background: rgba(255, 255, 255, 0.13); - opacity: 1; - } - - p{ - margin: 0; - line-height: 31px; - font-size: 12px; - font-weight: 600; - text-transform: uppercase; - display: inline-flex; - } - - i{ - font-size: 28px; - margin-right: 15px; - width: 30px; - text-align: center; - vertical-align: middle; - float: left; - } - } - - &:hover .nav-link{ - background: rgba(255,255,255,0.13); - opacity: 1; - } - - &.active .nav-link{ - color: $white-color; - opacity: 1; - background: rgba(255,255,255,0.23); - - } - - &.separator{ - margin: 15px 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - - & + .nav-item { - margin-top: 31px; - } - } - - } - - - - .caret{ - margin-top: 13px; - position: absolute; - right: 30px; - } - - .active-pro{ - position: absolute; - width: 100%; - bottom: 10px; - - a{ - color: $white-color !important; - - } - } - - .nav-link{ - color: $white-color; - margin: 5px 15px; - opacity: .86; - border-radius: 4px; - text-transform: uppercase; - line-height: 30px; - font-size: 12px; - font-weight: 600; - } - } - - .logo{ - padding: $navbar-padding-a; - border-bottom: 1px solid rgba(255, 255, 255, 0.2); - - p{ - float: left; - font-size: 20px; - margin: 10px 10px; - color: $white-color; - line-height: 20px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - } - - .simple-text{ - text-transform: uppercase; - padding: $padding-small-vertical $padding-zero; - display: flex; - align-items: center; - font-size: $font-size-large; - color: $white-color; - text-align: center; - font-weight: $font-weight-normal; - line-height: 30px; - } - } - - .logo-tim{ - border-radius: 50%; - border: 1px solid #333; - display: block; - height: 61px; - width: 61px; - float: left; - overflow: hidden; - - img{ - width: 60px; - height: 60px; - } - } - - &:after, - &:before{ - display: block; - content: ""; - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - z-index: 2; - } - - &:before{ - opacity: .33; - background: #000000; - } - - &:after{ - @include icon-gradient($new-purple, $purple-color-bottom); - z-index: 3; - opacity: 1; - } - - &[data-image]:after, - &.has-image:after{ - opacity: .77; - } - - &[data-color="black"]:after{ - @include icon-gradient($black-color-top, $black-color-bottom); - } - &[data-color="blue"]:after{ - @include icon-gradient($new-dark-blue, $blue-color-bottom); - } - &[data-color="azure"]:after{ - @include icon-gradient($new-blue, $azure-color-bottom); - } - &[data-color="green"]:after{ - @include icon-gradient($new-green, $green-color-bottom); - } - &[data-color="orange"]:after{ - @include icon-gradient($new-orange, $orange-color-bottom); - } - &[data-color="red"]:after{ - @include icon-gradient($new-red, $red-color-bottom); - } - &[data-color="purple"]:after{ - @include icon-gradient($new-purple, $purple-color-bottom); - } -} - - -.main-panel{ - background: rgba(203,203,210,.15); - position: relative; - float: right; - width: $sidebar-width; - min-height: 100%; - - > .content{ - padding: 30px 15px; - min-height: calc(100% - 123px); - } - - > .footer{ - border-top: 1px solid #e7e7e7; - } - - .navbar{ - margin-bottom: 0; - } -} - -.sidebar, -.main-panel{ - max-height: 100%; - height: 100%; - -webkit-transition-property: top,bottom; - transition-property: top,bottom; - -webkit-transition-duration: .2s,.2s; - transition-duration: .2s,.2s; - -webkit-transition-timing-function: linear,linear; - transition-timing-function: linear,linear; - -webkit-overflow-scrolling: touch; -} - - -.fixed-plugin{ - - .dropdown{ - .dropdown-menu{ - @include transform-translate-3d-0(-5%); - border-radius: 10px; - li.adjustments-line{ - border-bottom: 1px solid #ddd; - } - li{ - padding: 5px 2px !important; - } - .button-container{ - a{ - font-size: 14px; - } - &.show{ - @include transform-translate-3d-0(0%); - transform-origin: 0 0; - left: -303px !important; - } - } - - } - } - -} - -.fixed-plugin .dropdown .dropdown-menu{ - @include transform-translate-y-dropdown(-5%); - top: -40px !important; - opacity: 0; - left: -303px !important; - transform-origin: 0 0; -} -.fixed-plugin .dropdown.show .dropdown-menu{ - opacity: 1; - @include transform-translate-y-dropdown(0%); - transform-origin: 0 0; - left: -303px !important; -} - -.fixed-plugin .dropdown-menu:before, -.fixed-plugin .dropdown-menu:after{ - content: ""; - display: inline-block; - position: absolute; - top: 65px; - width: 16px; - transform: translateY(-50%); - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -} -.fixed-plugin .dropdown-menu:before{ - border-bottom: 16px solid rgba(0, 0, 0, 0); - border-left: 16px solid rgba(0,0,0,0.2); - border-top: 16px solid rgba(0,0,0,0); - right: -16px; -} - -.fixed-plugin .dropdown-menu:after{ - border-bottom: 16px solid rgba(0, 0, 0, 0); - border-left: 16px solid #fff; - border-top: 16px solid rgba(0,0,0,0); - right: -15px; -} - -.modal{ - &.show{ - .modal-dialog{ - -webkit-transform: translate(0, 30%); - -o-transform: translate(0, 30%); - transform: translate(0, 30%); - } - } - &.modal-mini{ - .modal-dialog{ - max-width: 255px; - margin: 0 auto; - } - } - .modal-content{ - .modal-header{ - border-bottom: none; - padding-top: 24px; - padding-right: 24px; - padding-bottom: 0; - padding-left: 24px; - - .modal-profile{ - width: 80px; - height: 80px; - border-radius: 50%; - text-align: center; - line-height: 5.7; - box-shadow: 0px 5px 20px 0px rgba(0, 0, 0, 0.3); - - i{ - font-size: 32px; - padding-top: 24px; - } - } - } - - .modal-body{ - padding-top: 24px; - padding-right: 24px; - padding-bottom: 16px; - padding-left: 24px; - line-height: 1.9; - } - - .modal-body + .modal-footer{ - padding-top: 0; - } - - .modal-footer{ - border-top: none; - padding-right: 24px; - padding-bottom: 16px; - padding-left: 24px; - -webkit-justify-content: space-between; - justify-content: space-between; - - .btn{ - margin: 0; - padding-left: 16px; - padding-right: 16px; - width: auto; - - &:hover, - &focus{ - text-decoration: none; - } - } - } - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_sidebar-and-main-panel.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss deleted file mode 100644 index f3a9e9a..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss +++ /dev/null @@ -1,99 +0,0 @@ -.table{ - - .radio, - .checkbox{ - position: relative; - height: 20px; - display: block; - width: 20px; - padding: 0px 0px; - margin: 0px 5px; - text-align: center; - - .icons{ - left: 5px; - } - } - > thead > tr > th, - > tbody > tr > th, - > tfoot > tr > th, - > thead > tr > td, - > tbody > tr > td, - > tfoot > tr > td{ - padding: 12px 8px; - vertical-align: middle; - &:last-child { - width: 100%; - } - } - - > thead > tr > th{ - border-bottom-width: 1px; - font-size: $font-size-small; - text-transform: uppercase; - color: $dark-gray; - font-weight: $font-weight-normal; - padding-bottom: 5px; - border-top: none !important; - border-bottom: none; - text-align: left !important; - } - - .td-actions .btn{ - @include opacity(0.36); - - &.btn-xs{ - padding-left: 3px; - padding-right: 3px; - } - } - .td-actions{ - min-width: 90px; - } - - > tbody > tr{ - position: relative; - - &:hover{ - .td-actions .btn{ - @include opacity(1); - } - } - } - - .btn:focus{ - box-shadow: none !important; - } -} - -.table.table-sm { - - > thead > tr > th, - > tbody > tr > th, - > tfoot > tr > th, - > thead > tr > td, - > tbody > tr > td, - > tfoot > tr > td{ - padding: 6px 6px; - } - - > thead > tr > th, - > thead > th { - font-size: $font-size-small; - padding-bottom: 3px; - } - - > tbody > tr > td { - font-size: $font-size-small; - } -} - -.table-upgrade{ - .table{ - tr{ - td{ - width: 100% - } - } - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_tables.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss deleted file mode 100644 index a79f7da..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss +++ /dev/null @@ -1,90 +0,0 @@ -/* Font Smoothing */ -body, -h1, .h1, -h2, .h2, -h3, .h3, -h4, .h4, -h5, .h5, -h6, .h6, -p, -.navbar, -.brand, -.btn-simple, -.alert, -a, -.td-name, -td, -button.close{ - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - font-family: "Roboto","Helvetica Neue",Arial,sans-serif; - font-weight: $font-weight-normal; -} - -h1, .h1, h2, .h2, h3, .h3, h4, .h4{ - font-weight: $font-weight-light; - margin: $margin-large-vertical 0 $margin-base-vertical; -} - -h1, .h1 { - font-size: $font-size-h1; -} -h2, .h2{ - font-size: $font-size-h2; -} -h3, .h3{ - font-size: $font-size-h3; - margin: 20px 0 10px; -} -h4, .h4{ - font-size: $font-size-h4; - line-height: 30px; -} -h5, .h5 { - font-size: $font-size-h5; - margin-bottom: 15px; -} -h6, .h6{ - font-size: $font-size-h6; - font-weight: $font-weight-bold; - text-transform: uppercase; -} -p{ - font-size: $font-paragraph; - line-height: $line-height-general; -} - -h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { - color: $dark-gray; - font-weight: $font-weight-light; - line-height: $line-height-general; -} - -h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small { - font-size: 60%; -} - -h1 .subtitle{ - display: block; - margin: 0 0 $margin-large-vertical; -} - -.text-muted{ - color: #9A9A9A; -} -.text-primary, .text-primary:hover{ - color: #1D62F0 !important; -} -.text-info, .text-info:hover{ - color: $info-color !important; -} -.text-success, .text-success:hover{ - color: $success-color !important; -} -.text-warning, .text-warning:hover{ - color: $warning-color !important; -} -.text-danger, .text-danger:hover{ - color: $danger-color !important; -} - diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_typography.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss deleted file mode 100644 index eb147af..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss +++ /dev/null @@ -1,263 +0,0 @@ -//== Buttons -// -//## For each of Bootstrap's buttons, define text, background and border color. - -$none: 0 !default; -$border-thin: 1px !default; -$border-thick: 2px !default; - -$white-color: #FFFFFF !default; -$white-bg: #FFFFFF !default; - -$smoke-bg: #F5F5F5 !default; - -$black-bg: rgba(30,30,30,.97) !default; - -$black-color: #333333 !default; -$black-hr: #444444 !default; - -$light-gray: #E3E3E3 !default; -$medium-gray: #DDDDDD !default; -$medium-dark-gray: #AAAAAA !default; -$dark-gray: #9A9A9A !default; - -$transparent-bg: transparent !default; - -$default-color: #888888 !default; -$default-bg: #888888 !default; -$default-states-color: #777777 !default; - -$primary-color: #3472F7 !default; -$primary-bg: #3472F7 !default; -$primary-states-color: #1D62F0 !default; - -$success-color: #87CB16 !default; -$success-bg: #87CB16 !default; -$success-states-color: #049F0C !default; - -$info-color: #1DC7EA !default; -$info-bg: #1DC7EA !default; -$info-states-color: lighten($info-color, 8%) !default; - -$warning-color: #FF9500 !default; -$warning-bg: #FF9500 !default; -$warning-states-color: #ED8D00 !default; - - -$danger-color: #FF4A55 !default; -$danger-bg: #FF4A55 !default; -$danger-states-color: #EE2D20 !default; - - - -$link-disabled-color: #666666 !default; - - -/* light colors */ -$light-blue: rgba($primary-color, .2); -$light-azure: rgba($info-color, .2); -$light-green: rgba($success-color, .2); -$light-orange: rgba($warning-color, .2); -$light-red: rgba($danger-color, .2); - - -//== Components -// - -$padding-base-vertical: 8px !default; -$padding-base-horizontal: 16px !default; - -$padding-round-vertical: 9px !default; -$padding-round-horizontal: 18px !default; - -$padding-simple-vertical: 10px !default; -$padding-simple-horizontal: 18px !default; - -$padding-large-vertical: 14px !default; -$padding-large-horizontal: 30px !default; - -$padding-small-vertical: 5px !default; -$padding-small-horizontal: 10px !default; - -$padding-xs-vertical: 1px !default; -$padding-xs-horizontal: 5px !default; - -$padding-label-vertical: 2px !default; -$padding-label-horizontal: 12px !default; - -$margin-large-vertical: 30px !default; -$margin-base-vertical: 15px !default; - -$padding-zero: 0px !default; - -$margin-bottom: 0 0 10px 0 !default; -$border-radius-small: 3px !default; -$border-radius-base: 4px !default; -$border-radius-large: 6px !default; -$border-radius-extreme: 10px !default; - -$border-radius-large-top: $border-radius-large $border-radius-large 0 0 !default; -$border-radius-large-bottom: 0 0 $border-radius-large $border-radius-large !default; - -$btn-round-radius: 30px !default; - -$height-base: 40px !default; - -$font-size-base: 14px !default; -$font-size-small: 12px !default; -$font-size-medium: 16px !default; -$font-size-large: 18px !default; -$font-size-large-navbar: 20px !default; - -$font-size-h1: 52px !default; -$font-size-h2: 36px !default; -$font-size-h3: 28px !default; -$font-size-h4: 22px !default; -$font-size-h5: 16px !default; -$font-size-h6: 14px !default; -$font-paragraph: 16px !default; -$font-size-navbar: 16px !default; -$font-size-small: 12px !default; - -$font-weight-light: 300 !default; -$font-weight-normal: 400 !default; -$font-weight-semi: 500 !default; -$font-weight-bold: 600 !default; - -$line-height-general: 1.5 !default; -$line-height: 20px !default; -$line-height-lg: 54px !default; - -$sidebar-width: calc(100% - 260px) !default; - - -$border-radius-top: 10px 10px 0 0 !default; -$border-radius-bottom: 0 0 10px 10px !default; - -$dropdown-shadow: 1px 2px 3px rgba(0, 0, 0, 0.125); - -$general-transition-time: 300ms !default; - -$slow-transition-time: 370ms !default; -$dropdown-coordinates: 29px -50px !default; - -$fast-transition-time: 150ms !default; - -$ultra-fast-transition-time: 100ms !default; - -$select-coordinates: 50% -40px !default; - -$transition-linear: linear !default; -$transition-bezier: cubic-bezier(0.34, 1.61, 0.7, 1) !default; -$transition-ease: ease 0s; -$transition-ease-in: ease-in !default; -$transition-ease-out: ease-out !default; - - -$navbar-padding-a: 10px 15px; -$navbar-margin-a: 10px 3px; - -$padding-social-a: 10px 5px; - -$navbar-margin-a-btn: 15px 3px; -$navbar-margin-a-btn-round: 16px 3px; - -$navbar-padding-a-icons: 6px 15px; -$navbar-margin-a-icons: 6px 3px; - -$navbar-padding-brand: 15px 15px; -$navbar-margin-brand: 5px 0px; - -$navbar-margin-brand-icons: 12px auto; - -$navbar-margin-btn: 15px 3px; - -$height-icon: 64px !default; -$width-icon: 64px !default; -$padding-icon: 12px !default; -$border-radius-icon: 15px !default; - -$size-icon: 64px; -$size-icon-sm: 32px; - - -$height-icon-sm: 32px; -$width-icon-sm: 32px; -$padding-icon-sm: 4px; -$border-radius-icon-sm: 7px; - -$height-icon-message: 40px; -$width-icon-message: 40px; - -$height-icon-message-sm: 20px; -$width-icon-message-sm: 20px; - -$default-color-top: #d9d9d9 !default; -$default-color-bottom: #909297 !default; - -$blue-color-top: #4087ea; -$blue-color-bottom: #533ce1; - -$azure-color-top: #45c0fd; -$azure-color-bottom: #4091ff; - -$green-color-top: #a1eb3a; -$green-color-bottom: #6dc030; - -$orange-color-top: #ffb33b; -$orange-color-bottom: #ff5221; - -$red-color-top: #ff3b30; -$red-color-bottom: #bb0502; - -$purple-color-top: #df55e1; -$purple-color-bottom: #943bea; - -$pink-color-top: #ff2a63; -$pink-color-bottom: #ff2e2e; - -$black-color-top: #292929; -$black-color-bottom: #0e0e0e; - -$social-facebook: #3b5998; -$social-twitter: #55acee; -$social-pinterest: #cc2127; -$social-google: #dd4b39; -$social-linkedin: #0976b4; -$social-dribbble: #ea4c89; -$social-github: #333333; -$social-youtube: #e52d27; -$social-stumbleupon: #eb4924; -$social-reddit: #ff4500; -$social-tumblr: #35465c; -$social-behance: #1769ff; - - -$filter-blue: darken($primary-color, 10%); -$filter-azure: darken($info-color, 10%); -$filter-green: darken($success-color, 10%); -$filter-orange: darken($warning-color, 10%); -$filter-red: darken($danger-color, 10%); - - -$new-blue: #1DC7EA; -$new-purple: #9368E9; -$new-red: #FB404B; -$new-green: #87CB16; -$new-orange: #FFA534; -$new-dark-blue: #1F77D0; -$new-black: #5e5e5e; - - -$topbar-x: topbar-x !default; -$topbar-back: topbar-back !default; -$bottombar-x: bottombar-x !default; -$bottombar-back: bottombar-back !default; - - -$white-navbar: rgba(#FFFFFF, .96); -$blue-navbar: lighten($new-dark-blue, 10%); -$azure-navbar: lighten($new-blue, 15%); -$green-navbar: lighten($new-green, 10%); -$orange-navbar: lighten($new-orange, 10%); -$red-navbar: lighten($new-red, 10%); diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/_variables.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss deleted file mode 100644 index 8322b05..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss +++ /dev/null @@ -1,70 +0,0 @@ -// Mixin for generating new styles -@mixin btn-styles($btn-color, $btn-states-color) { - border-color: $btn-color; - color: $btn-color; - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - background-color: $transparent-bg; - color: $btn-states-color; - border-color: $btn-states-color; - } - - &.disabled, - &:disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: $transparent-bg; - border-color: $btn-color; - } - } - - - &.btn-fill { - color: $white-color; - background-color: $btn-color; - @include opacity(1); - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle{ - background-color: $btn-states-color; - color: $white-color; - } - - .caret{ - border-top-color: $white-color; - } - } - - .caret{ - border-top-color: $btn-color; - } -} - - -@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){ - font-size: $font-size; - border-radius: $border; - padding: $padding-vertical $padding-horizontal; - - &.btn-round{ - padding: $padding-vertical + 1 $padding-horizontal; - } - - &.btn-simple{ - padding: $padding-vertical + 2 $padding-horizontal; - } - -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_buttons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss deleted file mode 100644 index af1f955..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss +++ /dev/null @@ -1,8 +0,0 @@ -@mixin filter($color){ - @if $color == #FFFFFF{ - background-color: rgba($color,.91); - } @else { - background-color: rgba($color,.69); - } -} - diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_cards.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss deleted file mode 100644 index c3b7efa..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss +++ /dev/null @@ -1,85 +0,0 @@ -// Scales for responsive SVG containers -$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default; -$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default; - -// Class names to be used when generating CSS -$ct-class-chart: ct-chart !default; -$ct-class-chart-line: ct-chart-line !default; -$ct-class-chart-bar: ct-chart-bar !default; -$ct-class-horizontal-bars: ct-horizontal-bars !default; -$ct-class-chart-pie: ct-chart-pie !default; -$ct-class-chart-donut: ct-chart-donut !default; -$ct-class-label: ct-label !default; -$ct-class-series: ct-series !default; -$ct-class-line: ct-line !default; -$ct-class-point: ct-point !default; -$ct-class-area: ct-area !default; -$ct-class-bar: ct-bar !default; -$ct-class-slice-pie: ct-slice-pie !default; -$ct-class-slice-donut: ct-slice-donut !default; -$ct-class-grid: ct-grid !default; -$ct-class-vertical: ct-vertical !default; -$ct-class-horizontal: ct-horizontal !default; -$ct-class-start: ct-start !default; -$ct-class-end: ct-end !default; - -// Container ratio -$ct-container-ratio: (1/1.618) !default; - -// Text styles for labels -$ct-text-color: rgba(0, 0, 0, 0.4) !default; -$ct-text-size: 1.3rem !default; -$ct-text-align: flex-start !default; -$ct-text-justify: flex-start !default; -$ct-text-line-height: 1; - -// Grid styles -$ct-grid-color: rgba(0, 0, 0, 0.2) !default; -$ct-grid-dasharray: 2px !default; -$ct-grid-width: 1px !default; - -// Line chart properties -$ct-line-width: 3px !default; -$ct-line-dasharray: false !default; -$ct-point-size: 8px !default; -// Line chart point, can be either round or square -$ct-point-shape: round !default; -// Area fill transparency between 0 and 1 -$ct-area-opacity: 0.8 !default; - -// Bar chart bar width -$ct-bar-width: 10px !default; - -// Donut width (If donut width is to big it can cause issues where the shape gets distorted) -$ct-donut-width: 60px !default; - -// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you -// should set this property to false -$ct-include-classes: true !default; - -// If this is set to true the CSS will contain colored series. You can extend or change the color with the -// properties below -$ct-include-colored-series: $ct-include-classes !default; - -// If set to true this will include all responsive container variations using the scales defined at the top of the script -$ct-include-alternative-responsive-containers: $ct-include-classes !default; - -// Series names and colors. This can be extended or customized as desired. Just add more series and colors. -$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default; -$ct-series-colors: ( - $new-blue, - $new-red, - $new-orange, - $new-purple, - $new-green, - $new-dark-blue, - $new-black, - $social-google, - $social-tumblr, - $social-youtube, - $social-twitter, - $social-pinterest, - $social-behance, - #6188e2, - #a748ca -) !default; diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_chartist.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss deleted file mode 100644 index 80df4df..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss +++ /dev/null @@ -1,13 +0,0 @@ -@mixin icon-background ($icon-url){ - background-image : url($icon-url); - -} - -@mixin icon-shape ($size, $padding, $border-radius) { - height: $size; - width: $size; - padding: $padding; - border-radius: $border-radius; - display: inline-table; - -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_icons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss deleted file mode 100644 index 870c918..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss +++ /dev/null @@ -1,17 +0,0 @@ -@mixin input-size($padding-vertical, $padding-horizontal, $height){ - padding: $padding-vertical $padding-horizontal; - height: $height; -} - -@mixin placeholder($color, $opacity){ - color: $color; - @include opacity(1); -} - -@mixin light-form(){ - border-radius: 0; - border:0; - padding: 0; - background-color: transparent; - -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_inputs.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss deleted file mode 100644 index 8a2bdd5..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss +++ /dev/null @@ -1,21 +0,0 @@ -@mixin label-style(){ - padding: $padding-label-vertical $padding-label-horizontal; - border: 1px solid $default-color; - border-radius: $border-radius-small; - color: $default-color; - font-weight: $font-weight-semi; - font-size: $font-size-small; - text-transform: uppercase; - display: inline-block; - vertical-align: middle; -} - -@mixin label-color($color){ - border-color: $color; - color: $color; -} -@mixin label-color-fill($color){ - border-color: $color; - color: $white-color; - background-color: $color; -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_labels.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss deleted file mode 100644 index 1a4e986..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss +++ /dev/null @@ -1,34 +0,0 @@ -$prefixes: ('', '-moz-', '-webkit-', '-ms-') !default; - -@mixin circle-animation(){ - @for $i from 0 to length($prefixes) { - @include circle-animation-details(nth($prefixes, $i + 1)); - } -} - -@mixin circle-animation-details($name){ - #{$name}animation-name: spin; - #{$name}animation-duration: 1250ms; - #{$name}animation-iteration-count: infinite; - #{$name}animation-timing-function: linear; - -} -@keyframes spin { - from { transform:rotate(0deg); } - to { transform:rotate(360deg); } -} - -@-webkit-keyframes spin { - from { -webkit-transform: rotate(0deg); } - to { -webkit-transform: rotate(360deg); } -} - -@-moz-keyframes spin { - from { -moz-transform: rotate(0deg); } - to { -moz-transform: rotate(360deg); } -} - -@-ms-keyframes spin { - from { -ms-transform: rotate(0deg); } - to { -ms-transform: rotate(360deg); } -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_morphing-buttons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss deleted file mode 100644 index 6f50046..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss +++ /dev/null @@ -1,11 +0,0 @@ -@mixin navbar-color($color){ - background-color: $color; -} - -@mixin center-item(){ - left: 0; - right: 0; - margin-right: auto; - margin-left: auto; - position: absolute; -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_navbars.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss deleted file mode 100644 index 38a7d4b..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss +++ /dev/null @@ -1,43 +0,0 @@ -@mixin social-buttons-color ($color){ - - border-color: $color; - color: $color; - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle { - background-color: $transparent-bg; - color: $color; - border-color: $color; - opacity: 1; - } - - &:disabled, - &[disabled], - &.disabled { - background-color: $transparent-bg; - border-color: $color; - } - - &.btn-fill { - color: $white-color; - background-color: $color; - opacity: 0.9; - - &:hover, - &:focus, - &:active, - &.active, - .open > &.dropdown-toggle{ - background-color: $color; - color: $white-color; - opacity: 1; - } - - } - - -} - \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_social-buttons.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss deleted file mode 100644 index edf6f58..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss +++ /dev/null @@ -1,4 +0,0 @@ -@mixin pill-style($color){ - border: 1px solid $color; - color: $color; -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_tabs.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss deleted file mode 100644 index da32b74..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Opacity - -@mixin opacity($opacity) { - opacity: $opacity; - // IE8 filter - $opacity-ie: ($opacity * 100); - filter: #{alpha(opacity=$opacity-ie)}; -} - -@mixin black-filter($opacity){ - top: 0; - left: 0; - height: 100%; - width: 100%; - position: absolute; - background-color: rgba(17,17,17,$opacity); - display: block; - content: ""; - z-index: 1; -} \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_transparency.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss deleted file mode 100644 index 037bd44..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss +++ /dev/null @@ -1,211 +0,0 @@ -// User select -// For selecting text on the page - -@mixin user-select($select) { - -webkit-user-select: $select; - -moz-user-select: $select; - -ms-user-select: $select; // IE10+ - user-select: $select; -} - -@mixin box-shadow($shadow...) { - -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 - box-shadow: $shadow; -} - -// Box sizing -@mixin box-sizing($boxmodel) { - -webkit-box-sizing: $boxmodel; - -moz-box-sizing: $boxmodel; - box-sizing: $boxmodel; -} - - -@mixin transition($time, $type){ - -webkit-transition: all $time $type; - -moz-transition: all $time $type; - -o-transition: all $time $type; - -ms-transition: all $time $type; - transition: all $time $type; -} - -@mixin transform-scale($value){ - -webkit-transform: scale($value); - -moz-transform: scale($value); - -o-transform: scale($value); - -ms-transform: scale($value); - transform: scale($value); -} - -@mixin transform-translate-x($value){ - -webkit-transform: translate3d($value, 0, 0); - -moz-transform: translate3d($value, 0, 0); - -o-transform: translate3d($value, 0, 0); - -ms-transform: translate3d($value, 0, 0); - transform: translate3d($value, 0, 0); -} - -@mixin transform-translate-3d($value){ - -webkit-transform: translate3d($value, 0, 0); - -moz-transform: translate3d($value, 0, 0); - -o-transform: translate3d($value, 0, 0); - -ms-transform: translate3d($value, 0, 0); - transform: translate3d($value, 0, 0) !important; -} - -@mixin transform-translate-y-dropdown($value){ - -webkit-transform: translate3d(0, $value, 0) !important; - -moz-transform: translate3d(0, $value, 0) !important; - -o-transform: translate3d(0, $value, 0) !important; - -ms-transform: translate3d(0, $value, 0) !important; - transform: translate3d(0, $value, 0) !important; -} - -@mixin transform-translate-3d-0($value){ - -webkit-transform: translate3d(0, $value, 0) !important; - -moz-transform: translate3d(0, $value, 0) !important; - -o-transform: translate3d(0, $value, 0) !important; - -ms-transform: translate3d(0, $value, 0) !important; - transform: translate3d(0, $value, 0) !important; -} - -@mixin transform-origin($coordinates){ - -webkit-transform-origin: $coordinates; - -moz-transform-origin: $coordinates; - -o-transform-origin: $coordinates; - -ms-transform-origin: $coordinates; - transform-origin: $coordinates; -} - -@mixin icon-gradient ($top-color, $bottom-color){ - background: $top-color; - background: -moz-linear-gradient(top, $top-color 0%, $bottom-color 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top-color), color-stop(100%,$bottom-color)); - background: -webkit-linear-gradient(top, $top-color 0%,$bottom-color 100%); - background: -o-linear-gradient(top, $top-color 0%,$bottom-color 100%); - background: -ms-linear-gradient(top, $top-color 0%,$bottom-color 100%); - background: linear-gradient(to bottom, $top-color 0%,$bottom-color 100%); - background-size: 150% 150%; -} - -@mixin radial-gradient($extern-color, $center-color){ - background: $extern-color; - background: -moz-radial-gradient(center, ellipse cover, $center-color 0%, $extern-color 100%); /* FF3.6+ */ - background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,$center-color), color-stop(100%,$extern-color)); /* Chrome,Safari4+ */ - background: -webkit-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Chrome10+,Safari5.1+ */ - background: -o-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* Opera 12+ */ - background: -ms-radial-gradient(center, ellipse cover, $center-color 0%,$extern-color 100%); /* IE10+ */ - background: radial-gradient(ellipse at center, $center-color 0%,$extern-color 100%); /* W3C */ - background-size: 550% 450%; -} - -@mixin vertical-align { - position: relative; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} - -@mixin rotate-180(){ - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} - -@mixin bar-animation($type){ - -webkit-animation: $type 500ms linear 0s; - -moz-animation: $type 500ms linear 0s; - animation: $type 500ms 0s; - -webkit-animation-fill-mode: forwards; - -moz-animation-fill-mode: forwards; - animation-fill-mode: forwards; -} - -@mixin topbar-x-rotation(){ - @keyframes topbar-x { - 0% {top: 0px; transform: rotate(0deg); } - 45% {top: 6px; transform: rotate(145deg); } - 75% {transform: rotate(130deg); } - 100% {transform: rotate(135deg); } - } - @-webkit-keyframes topbar-x { - 0% {top: 0px; -webkit-transform: rotate(0deg); } - 45% {top: 6px; -webkit-transform: rotate(145deg); } - 75% {-webkit-transform: rotate(130deg); } - 100% { -webkit-transform: rotate(135deg); } - } - @-moz-keyframes topbar-x { - 0% {top: 0px; -moz-transform: rotate(0deg); } - 45% {top: 6px; -moz-transform: rotate(145deg); } - 75% {-moz-transform: rotate(130deg); } - 100% { -moz-transform: rotate(135deg); } - } -} - -@mixin topbar-back-rotation(){ - @keyframes topbar-back { - 0% { top: 6px; transform: rotate(135deg); } - 45% { transform: rotate(-10deg); } - 75% { transform: rotate(5deg); } - 100% { top: 0px; transform: rotate(0); } - } - - @-webkit-keyframes topbar-back { - 0% { top: 6px; -webkit-transform: rotate(135deg); } - 45% { -webkit-transform: rotate(-10deg); } - 75% { -webkit-transform: rotate(5deg); } - 100% { top: 0px; -webkit-transform: rotate(0); } - } - - @-moz-keyframes topbar-back { - 0% { top: 6px; -moz-transform: rotate(135deg); } - 45% { -moz-transform: rotate(-10deg); } - 75% { -moz-transform: rotate(5deg); } - 100% { top: 0px; -moz-transform: rotate(0); } - } -} - -@mixin bottombar-x-rotation(){ - @keyframes bottombar-x { - 0% {bottom: 0px; transform: rotate(0deg);} - 45% {bottom: 6px; transform: rotate(-145deg);} - 75% {transform: rotate(-130deg);} - 100% {transform: rotate(-135deg);} - } - @-webkit-keyframes bottombar-x { - 0% {bottom: 0px; -webkit-transform: rotate(0deg);} - 45% {bottom: 6px; -webkit-transform: rotate(-145deg);} - 75% {-webkit-transform: rotate(-130deg);} - 100% {-webkit-transform: rotate(-135deg);} - } - @-moz-keyframes bottombar-x { - 0% {bottom: 0px; -moz-transform: rotate(0deg);} - 45% {bottom: 6px; -moz-transform: rotate(-145deg);} - 75% {-moz-transform: rotate(-130deg);} - 100% {-moz-transform: rotate(-135deg);} - } -} - -@mixin bottombar-back-rotation{ - @keyframes bottombar-back { - 0% { bottom: 6px;transform: rotate(-135deg);} - 45% { transform: rotate(10deg);} - 75% { transform: rotate(-5deg);} - 100% { bottom: 0px;transform: rotate(0);} - } - @-webkit-keyframes bottombar-back { - 0% {bottom: 6px;-webkit-transform: rotate(-135deg);} - 45% {-webkit-transform: rotate(10deg);} - 75% {-webkit-transform: rotate(-5deg);} - 100% {bottom: 0px;-webkit-transform: rotate(0);} - } - @-moz-keyframes bottombar-back { - 0% {bottom: 6px;-moz-transform: rotate(-135deg);} - 45% {-moz-transform: rotate(10deg);} - 75% {-moz-transform: rotate(-5deg);} - 100% {bottom: 0px;-moz-transform: rotate(0);} - } - -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/mixins/_vendor-prefixes.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss deleted file mode 100644 index 387d152..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - -// This file was modified by Creative Tim to keep only the animation that we need for Bootstrap Notify - - - - - - - - - - - - - - - -@charset "UTF-8"; - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2015 Daniel Eden -*/ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -.animated.bounceIn, -.animated.bounceOut { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -.animated.flipOutX, -.animated.flipOutY { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -@-webkit-keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - from, to { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - - - -@-webkit-keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDown { - from { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - to { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - - -@-webkit-keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -@keyframes fadeOut { - from { - opacity: 1; - } - - to { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - from { - opacity: 1; - } - - to { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_animate.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss deleted file mode 100644 index 1cc2d3a..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss +++ /dev/null @@ -1,463 +0,0 @@ -/*! - * Datetimepicker for Bootstrap 3 - * ! version : 4.7.14 - * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */ -$bs-datetimepicker-timepicker-font-size: 1.2em !default; -$bs-datetimepicker-active-bg: $info-color !default; -$bs-datetimepicker-active-color: $white-color !default; -$bs-datetimepicker-border-radius: $border-radius-base; -$bs-datetimepicker-btn-hover-bg: $light-gray !default; -$bs-datetimepicker-disabled-color: $medium-gray !default; -$bs-datetimepicker-alternate-color: $medium-gray !default; -$bs-datetimepicker-secondary-border-color: #ccc !default; -$bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2) !default; -$bs-datetimepicker-primary-border-color: white !default; -$bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !default; - - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - - -.bootstrap-datetimepicker-widget { - list-style: none; - - - &.dropdown-menu { - padding: 4px; - width: 19em; - - &.timepicker-sbs { - @media (min-width: $screen-sm-min) { - width: 38em; - } - - @media (min-width: $screen-md-min) { - width: 38em; - } - - @media (min-width: $screen-lg-min) { - width: 38em; - } - } - - &.bottom { - - &:before { - border-bottom: 11px solid rgba(0, 0, 0, 0.2); - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - content: ""; - display: inline-block; - position: absolute; - left: 12px; - top: -11px; - } - - &:after { - border-bottom: 11px solid #FFFFFF; - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - content: ""; - display: inline-block; - position: absolute; - left: 12px; - top: -10px; - } - } - - &.top { - margin-top: auto; - margin-bottom: -20px; - - &.open{ - margin-top: auto; - margin-bottom: 5px; - } - - &:before { - border-top: 11px solid rgba(0, 0, 0, 0.2); - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - border-bottom: none; - content: ""; - display: inline-block; - position: absolute; - left: 12px; - bottom: -11px; - top: auto; - } - - &:after { - border-top: 11px solid #FFFFFF; - border-left: 11px solid rgba(0, 0, 0, 0); - border-right: 11px solid rgba(0, 0, 0, 0); - border-bottom: none; - content: ""; - display: inline-block; - position: absolute; - left: 12px; - bottom: -10px; - top: auto; - } - } - - - - &.pull-right { - &:before { - left: auto; - right: 6px; - } - - &:after { - left: auto; - right: 7px; - } - } - - &.open{ - visibility: visible !important; - opacity: 1 !important; - top: 125px !important; - font-size: 14px !important; - } - } - - .list-unstyled { - margin: 0; - } - - a[data-action] { - padding: 6px 0; - border-width: 0; - } - - a[data-action]:active { - box-shadow: none; - } - - .timepicker-hour, .timepicker-minute, .timepicker-second { - width: 56px; - height: 56px; - font-weight: $font-weight-light; - font-size: $font-size-h4; - margin: 3px; - border-radius: 50%; - } - - button[data-action] { - padding: 6px; - } - - .btn[data-action="incrementHours"]::after { - @extend .sr-only; - content: "Increment Hours"; - } - - .btn[data-action="incrementMinutes"]::after { - @extend .sr-only; - content: "Increment Minutes"; - } - - .btn[data-action="decrementHours"]::after { - @extend .sr-only; - content: "Decrement Hours"; - } - - .btn[data-action="decrementMinutes"]::after { - @extend .sr-only; - content: "Decrement Minutes"; - } - - .btn[data-action="showHours"]::after { - @extend .sr-only; - content: "Show Hours"; - } - - .btn[data-action="showMinutes"]::after { - @extend .sr-only; - content: "Show Minutes"; - } - - .btn[data-action="togglePeriod"]::after { - @extend .sr-only; - content: "Toggle AM/PM"; - } - - .btn[data-action="clear"]::after { - @extend .sr-only; - content: "Clear the picker"; - } - - .btn[data-action="today"]::after { - @extend .sr-only; - content: "Set the date to today"; - } - - .picker-switch { - text-align: center; - border-radius: $bs-datetimepicker-border-radius; - font-size: 14px; - - &::after { - @extend .sr-only; - content: "Toggle Date and Time Screens"; - } - - td { - padding: 0; - margin: 0; - height: auto; - width: auto; - line-height: inherit; - - span { - line-height: 2.5; - height: 2.5em; - width: 100%; - border-radius: $bs-datetimepicker-border-radius; - margin: 2px 0px !important; - } - - a, - a:hover{ - color: $info-color; - } - } - } - - table { - width: 100%; - margin: 0; - - - & td > div, - & th > div { - // @extend .animation-transition-fast; - text-align: center; - - } - - - & th { - // @extend .animation-transition-fast; - - height: 20px; - line-height: 20px; - width: 20px; - - &.picker-switch { - width: 145px; - } - - &.disabled, - &.disabled:hover { - background: none; - color: $bs-datetimepicker-disabled-color; - cursor: not-allowed; - } - - &.prev span, - &.next span{ - border-radius: $bs-datetimepicker-border-radius; - height: 27px; - width: 27px; - line-height: 28px; - font-size: 12px; - border-radius: 50%; - text-align: center; - - } - - &.prev::after { - @extend .sr-only; - content: "Previous Month"; - } - - &.next::after { - @extend .sr-only; - content: "Next Month"; - } - - &.dow{ - text-align: center; - border-bottom: 1px solid $light-gray; - font-size: $font-size-small; - text-transform: uppercase; - color: $dark-gray; - font-weight: $font-weight-normal; - padding-bottom: 5px; - padding-top: $padding-default-vertical; - } - } - - & thead tr:first-child th{ - cursor: pointer; - - &:hover span, - &.picker-switch:hover{ - background: $bs-datetimepicker-btn-hover-bg; - } - } - - & td{ - > div { - border-radius: $bs-datetimepicker-border-radius; - - height: 54px; - line-height: 54px; - width: 54px; - text-align: center; - } - - &.cw > div { - font-size: .8em; - height: 20px; - line-height: 20px; - color: $bs-datetimepicker-alternate-color; - } - - &.day > div { - height: 30px; - line-height: 30px; - width: 30px; - text-align: center; - padding: 0px; - border-radius: 50%; - } - - &.minute > div, - &.hour > div{ - border-radius: 50%; - } - - &.day:hover > div, - &.hour:hover > div, - &.minute:hover > div, - &.second:hover > div { - background: $bs-datetimepicker-btn-hover-bg; - cursor: pointer; - } - - &.old > div, - &.new > div{ - color: $bs-datetimepicker-alternate-color; - } - - &.today > div{ - position: relative; - - &:before { - content: ''; - display: inline-block; - border: 0 0 7px 7px solid transparent; - border-bottom-color: $bs-datetimepicker-active-bg; - border-top-color: $bs-datetimepicker-secondary-border-color-rgba; - position: absolute; - bottom: 4px; - right: 4px; - } - } - - &.active > div, - &.active:hover > div { - background-color: $info-bg; - color: $bs-datetimepicker-active-color; - - } - - &.active.today:before > div{ - border-bottom-color: #fff; - } - - &.disabled > div, - &.disabled:hover > div { - background: none; - color: $bs-datetimepicker-disabled-color; - cursor: not-allowed; - } - - span { - // @extend .animation-transition-fast; - - display: inline-block; - width: 56px; - height: 56px; - line-height: 56px; - margin: 3px 3px; - cursor: pointer; - border-radius: 50%; - text-align: center; - - &:hover { - background: $bs-datetimepicker-btn-hover-bg; - } - - &.active { - background-color: $bs-datetimepicker-active-bg; - color: $bs-datetimepicker-active-color; - } - - &.old { - color: $bs-datetimepicker-alternate-color; - } - - &.disabled, - &.disabled:hover { - background: none; - color: $bs-datetimepicker-disabled-color; - cursor: not-allowed; - } - } - } - } - - .timepicker-picker, - .timepicker-hours, - .timepicker-minutes{ - span{ - border-radius: 50% !important; - } - - .table-condensed{ - td{ - a{ - color: $default-color; - background-color: transparent; - } - } - } - } - - &.usetwentyfour { - td.hour { - height: 27px; - line-height: 27px; - } - } -} - -.input-group.date { - & .input-group-addon { - cursor: pointer; - } -} - -.table-condensed>tbody>tr>td, -.table-condensed>tbody>tr>th, -.table-condensed>tfoot>tr>td, -.table-condensed>tfoot>tr>th, -.table-condensed>thead>tr>td, -.table-condensed>thead>tr>th{ - padding: 1px; -} diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/lbd/plugins/_datetime-picker.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss b/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss deleted file mode 100644 index 9133fe8..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss +++ /dev/null @@ -1,47 +0,0 @@ -/*! - - ========================================================= - * Vue Light Bootstrap Dashboard - v2.1.0 (Bootstrap 4) - ========================================================= - - * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard - * Copyright 2023 Creative Tim (http://www.creative-tim.com) - * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md) - - ========================================================= - - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - */ - -@import "lbd/variables"; -@import "lbd/mixins"; - -@import "lbd/typography"; - -// Core CSS -@import "lbd/misc"; -@import "lbd/sidebar-and-main-panel"; -@import "lbd/buttons"; -@import "lbd/inputs"; - -@import "lbd/alerts"; -@import "lbd/tables"; - -@import "lbd/checkbox-radio-switch"; -@import "lbd/navbars"; -@import "lbd/footers"; - -// Fancy Stuff -@import "lbd/plugins/animate"; -@import "lbd/dropdown"; -@import "lbd/cards"; -@import "lbd/chartist"; -@import "lbd/responsive"; -@import "lbd/bootstrap-switch"; - -// Nucleo Icons -@import "lbd/partial-nucleo-icons"; - -// Nucleo Icons -@import "lbd/partial-nucleo-icons"; diff --git a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/sass/light-bootstrap-dashboard.scss:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue deleted file mode 100644 index 7cf757c..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue deleted file mode 100644 index 98b6fc6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/Card.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue deleted file mode 100644 index e192cd2..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/ChartCard.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue b/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue deleted file mode 100644 index 8ef4aac..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Cards/StatsCard.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue deleted file mode 100644 index 6b7b155..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue +++ /dev/null @@ -1,52 +0,0 @@ - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue deleted file mode 100644 index 6111bfe..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue deleted file mode 100644 index 1cc258b..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue +++ /dev/null @@ -1,49 +0,0 @@ - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue deleted file mode 100644 index e5df6e3..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue deleted file mode 100644 index 7ef77a2..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js deleted file mode 100644 index e871fb6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js +++ /dev/null @@ -1,66 +0,0 @@ -import Notifications from './Notifications.vue'; - -const NotificationStore = { - state: [], // here the notifications will be added - settings: { - overlap: false, - verticalAlign: 'top', - horizontalAlign: 'right', - type: 'info', - timeout: 5000, - closeOnClick: true, - showClose: true - }, - setOptions(options) { - this.settings = Object.assign(this.settings, options); - }, - removeNotification(timestamp) { - const indexToDelete = this.state.findIndex(n => n.timestamp === timestamp); - if (indexToDelete !== -1) { - this.state.splice(indexToDelete, 1); - } - }, - addNotification(notification) { - if (typeof notification === 'string' || notification instanceof String) { - notification = { message: notification }; - } - notification.timestamp = new Date(); - notification.timestamp.setMilliseconds( - notification.timestamp.getMilliseconds() + this.state.length - ); - notification = Object.assign({}, this.settings, notification); - this.state.push(notification); - }, - notify(notification) { - if (Array.isArray(notification)) { - notification.forEach(notificationInstance => { - this.addNotification(notificationInstance); - }); - } else { - this.addNotification(notification); - } - } -}; - -const NotificationsPlugin = { - install(Vue, options) { - let app = new Vue({ - data: { - notificationStore: NotificationStore - }, - methods: { - notify(notification) { - this.notificationStore.notify(notification); - } - } - }); - Vue.prototype.$notify = app.notify; - Vue.prototype.$notifications = app.notificationStore; - Vue.component('Notifications', Notifications); - if (options) { - NotificationStore.setOptions(options); - } - } -}; - -export default NotificationsPlugin; diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue deleted file mode 100644 index 1dc1d28..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SideBar.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue deleted file mode 100644 index 343456b..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/SidebarLink.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js deleted file mode 100644 index 5376efc..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js +++ /dev/null @@ -1,39 +0,0 @@ -import Sidebar from './SideBar.vue' -import SidebarLink from './SidebarLink.vue' - -const SidebarStore = { - showSidebar: false, - sidebarLinks: [ - { - name: 'Dashboard', - icon: 'ti-panel', - path: '/admin/overview' - } - ], - displaySidebar (value) { - this.showSidebar = value - } -} - -const SidebarPlugin = { - - install (Vue) { - Vue.mixin({ - data () { - return { - sidebarStore: SidebarStore - } - } - }) - - Object.defineProperty(Vue.prototype, '$sidebar', { - get () { - return this.$root.sidebarStore - } - }) - Vue.component('side-bar', Sidebar) - Vue.component('sidebar-link', SidebarLink) - } -} - -export default SidebarPlugin diff --git a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/SidebarPlugin/index.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue b/vue-light-bootstrap-dashboard-master/src/components/Table.vue deleted file mode 100644 index 000c85e..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Table.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/index.js b/vue-light-bootstrap-dashboard-master/src/components/index.js deleted file mode 100644 index 6bfdc37..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import BaseCheckbox from './Inputs/BaseCheckbox.vue' -import Radio from './Inputs/BaseRadio.vue' -import BaseInput from './Inputs/BaseInput.vue' - -import BaseDropdown from './BaseDropdown.vue' -import Table from './Table.vue' - -import Card from './Cards/Card.vue' -import ChartCard from './Cards/ChartCard.vue' -import StatsCard from './Cards/StatsCard.vue' - -import SidebarPlugin from './SidebarPlugin' - -let components = { - BaseCheckbox, - Radio, - BaseInput, - Card, - ChartCard, - StatsCard, - Table, - BaseDropdown, - SidebarPlugin -} - -export default components diff --git a/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js deleted file mode 100644 index e4c70f5..0000000 --- a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - bind: function (el, binding, vnode) { - el.clickOutsideEvent = function (event) { - // here I check that click was outside the el and his childrens - if (!(el == event.target || el.contains(event.target))) { - // and if it did, call method provided in attribute value - vnode.context[binding.expression](event); - } - }; - document.body.addEventListener('click', el.clickOutsideEvent) - }, - unbind: function (el) { - document.body.removeEventListener('click', el.clickOutsideEvent) - }, -} diff --git a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/globalComponents.js b/vue-light-bootstrap-dashboard-master/src/globalComponents.js deleted file mode 100644 index 579ec66..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalComponents.js +++ /dev/null @@ -1,21 +0,0 @@ -import BaseInput from './components/Inputs/BaseInput.vue' -import BaseCheckbox from './components/Inputs/BaseCheckbox.vue' -import BaseRadio from './components/Inputs/BaseRadio.vue' -import BaseDropdown from './components/BaseDropdown.vue' -import Card from './components/Cards/Card.vue' - -/** - * You can register global components here and use them as a plugin in your main Vue instance - */ - -const GlobalComponents = { - install (Vue) { - Vue.component(BaseInput.name, BaseInput) - Vue.component(BaseCheckbox.name, BaseCheckbox) - Vue.component(BaseRadio.name, BaseRadio) - Vue.component(BaseDropdown.name, BaseDropdown) - Vue.component('card', Card) - } -} - -export default GlobalComponents diff --git a/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js deleted file mode 100644 index a7ee7fb..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js +++ /dev/null @@ -1,14 +0,0 @@ -import clickOutside from './directives/click-ouside.js'; - - -/** - * You can register global directives here and use them as a plugin in your main Vue instance - */ - -const GlobalDirectives = { - install (Vue) { - Vue.directive('click-outside', clickOutside); - } -} - -export default GlobalDirectives diff --git a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue deleted file mode 100644 index 0238796..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue deleted file mode 100644 index 66ceb09..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue deleted file mode 100644 index 8fdd08f..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue deleted file mode 100644 index ea94355..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue deleted file mode 100644 index 0681b00..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue +++ /dev/null @@ -1,102 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js deleted file mode 100644 index d59a9e4..0000000 --- a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js +++ /dev/null @@ -1,27 +0,0 @@ -import VTooltip from 'v-tooltip' -// Notifications plugin -import Notifications from 'src/components/NotificationPlugin' -// A plugin file where you could register global components used across the app -import GlobalComponents from './globalComponents' -// A plugin file where you could register global directives -import GlobalDirectives from './globalDirectives' -// Sidebar on the right. Used as a local plugin in DashboardLayout.vue -import SideBar from './components/SidebarPlugin' - -// asset imports -import 'bootstrap/dist/css/bootstrap.css' -import './assets/sass/light-bootstrap-dashboard.scss' -import './assets/css/demo.css' - -/** - * This is the main Light Bootstrap Dashboard Vue plugin where dashboard related plugins are registerd. - */ -export default { - install (Vue) { - Vue.use(GlobalComponents) - Vue.use(GlobalDirectives) - Vue.use(SideBar) - Vue.use(Notifications) - Vue.use(VTooltip) - } -} diff --git a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/main.js b/vue-light-bootstrap-dashboard-master/src/main.js deleted file mode 100644 index 71016a7..0000000 --- a/vue-light-bootstrap-dashboard-master/src/main.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! - - ========================================================= - * Vue Light Bootstrap Dashboard - v2.1.0 (Bootstrap 4) - ========================================================= - - * Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard - * Copyright 2023 Creative Tim (http://www.creative-tim.com) - * Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md) - - ========================================================= - - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - */ -import Vue from "vue"; -import VueRouter from "vue-router"; -import App from "./App.vue"; - -// LightBootstrap plugin -import LightBootstrap from "./light-bootstrap-main"; - -// router setup -import routes from "./routes/routes"; - -import "./registerServiceWorker"; -// plugin setup -Vue.use(VueRouter); -Vue.use(LightBootstrap); - -// configure router -const router = new VueRouter({ - routes, // short for routes: routes - linkActiveClass: "nav-item active", - scrollBehavior: (to) => { - if (to.hash) { - return { selector: to.hash }; - } else { - return { x: 0, y: 0 }; - } - }, -}); - -/* eslint-disable no-new */ -new Vue({ - el: "#app", - render: (h) => h(App), - router, -}); diff --git a/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue deleted file mode 100644 index d9f4607..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue +++ /dev/null @@ -1,632 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue deleted file mode 100644 index 25bed76..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js deleted file mode 100644 index ce40e36..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js +++ /dev/null @@ -1 +0,0 @@ -export const API_KEY = 'YOUR_API_KEY_HERE' diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue deleted file mode 100644 index db6c1a6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue deleted file mode 100644 index 37e053f..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue deleted file mode 100644 index 6ee4af0..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue +++ /dev/null @@ -1,273 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue deleted file mode 100644 index ebcf86d..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue +++ /dev/null @@ -1,115 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue deleted file mode 100644 index 442a57c..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue deleted file mode 100644 index cfc8b71..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue deleted file mode 100644 index a6507a9..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue deleted file mode 100644 index 00536b0..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue deleted file mode 100644 index dd8580b..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js deleted file mode 100644 index 76cede0..0000000 --- a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable no-console */ - -import { register } from 'register-service-worker' - -if (process.env.NODE_ENV === 'production') { - register(`${process.env.BASE_URL}service-worker.js`, { - ready () { - console.log( - 'App is being served from cache by a service worker.\n' + - 'For more details, visit https://goo.gl/AFskqB' - ) - }, - registered () { - console.log('Service worker has been registered.') - }, - cached () { - console.log('Content has been cached for offline use.') - }, - updatefound () { - console.log('New content is downloading.') - }, - updated () { - console.log('New content is available; please refresh.') - }, - offline () { - console.log('No internet connection found. App is running in offline mode.') - }, - error (error) { - console.error('Error during service worker registration:', error) - } - }) -} diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js b/vue-light-bootstrap-dashboard-master/src/routes/routes.js deleted file mode 100644 index e17c405..0000000 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js +++ /dev/null @@ -1,80 +0,0 @@ -import DashboardLayout from '../layout/DashboardLayout.vue' -// GeneralViews -import NotFound from '../pages/NotFoundPage.vue' - -// Admin pages -import Overview from 'src/pages/Overview.vue' -import UserProfile from 'src/pages/UserProfile.vue' -import TableList from 'src/pages/TableList.vue' -import Typography from 'src/pages/Typography.vue' -import Icons from 'src/pages/Icons.vue' -import Maps from 'src/pages/Maps.vue' -import Notifications from 'src/pages/Notifications.vue' -import Upgrade from 'src/pages/Upgrade.vue' - -const routes = [ - { - path: '/', - component: DashboardLayout, - redirect: '/admin/overview' - }, - { - path: '/admin', - component: DashboardLayout, - redirect: '/admin/overview', - children: [ - { - path: 'overview', - name: 'Overview', - component: Overview - }, - { - path: 'user', - name: 'User', - component: UserProfile - }, - { - path: 'table-list', - name: 'Table List', - component: TableList - }, - { - path: 'typography', - name: 'Typography', - component: Typography - }, - { - path: 'icons', - name: 'Icons', - component: Icons - }, - { - path: 'maps', - name: 'Maps', - component: Maps - }, - { - path: 'notifications', - name: 'Notifications', - component: Notifications - }, - { - path: 'upgrade', - name: 'Upgrade to PRO', - component: Upgrade - } - ] - }, - { path: '*', component: NotFound } -] - -/** - * Asynchronously load view (Webpack Lazy loading compatible) - * The specified component must be inside the Views folder - * @param {string} name the filename (basename) of the view to load. -function view(name) { - var res= require('../components/Dashboard/Views/' + name + '.vue'); - return res; -};**/ - -export default routes diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/vue.config.js b/vue-light-bootstrap-dashboard-master/vue.config.js deleted file mode 100644 index 054a44f..0000000 --- a/vue-light-bootstrap-dashboard-master/vue.config.js +++ /dev/null @@ -1,44 +0,0 @@ -const path = require('path'); -const webpack = require('webpack'); - -function resolveSrc(_path) { - return path.join(__dirname, _path); -} - -module.exports = { - outputDir: '../../4team_final_MainSpring/demo2/src/main/resources/static', - lintOnSave: false, - configureWebpack: { - // Set up all the aliases we use in our app. - resolve: { - alias: { - src: resolveSrc('src'), - 'chart.js': 'chart.js/dist/Chart.js' - } - }, - plugins: [ - new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 6 - }) - ] - }, - pwa: { - name: 'Vue Light Bootstrap Dashboard', - themeColor: '#344675', - msTileColor: '#344675', - appleMobileWebAppCapable: 'yes', - appleMobileWebAppStatusBarStyle: '#344675' - }, - css: { - // Enable CSS source maps. - sourceMap: process.env.NODE_ENV !== 'production' - }, - devServer: { - proxy: { - '/': { - target: "http://localhost:8080", - changeOrigin: true, - } - } - } -}; From 3c470deaff83278e88a7311587b758b476158584 Mon Sep 17 00:00:00 2001 From: ae-chae Date: Tue, 26 Mar 2024 16:51:20 +0900 Subject: [PATCH 017/101] Fix line endings --- .../src/App.vue:Zone.Identifier | 3 - .../src/assets/css/demo.css:Zone.Identifier | 3 - .../fonts/nucleo-icons.eot:Zone.Identifier | 3 - .../fonts/nucleo-icons.svg:Zone.Identifier | 3 - .../fonts/nucleo-icons.ttf:Zone.Identifier | 3 - .../fonts/nucleo-icons.woff2:Zone.Identifier | 3 - .../fonts/nucleo-icons.woff:Zone.Identifier | 3 - .../BaseDropdown.vue:Zone.Identifier | 3 - .../Inputs/BaseCheckbox.vue:Zone.Identifier | 3 - .../Inputs/BaseInput.vue:Zone.Identifier | 3 - .../Inputs/BaseRadio.vue:Zone.Identifier | 3 - .../Notification.vue:Zone.Identifier | 3 - .../Notifications.vue:Zone.Identifier | 3 - .../index.js:Zone.Identifier | 3 - .../src/components/Table.vue | 43 ++++++----- .../src/components/Table.vue:Zone.Identifier | 3 - .../src/components/index.js:Zone.Identifier | 3 - .../click-ouside.js:Zone.Identifier | 3 - .../src/globalComponents.js:Zone.Identifier | 3 - .../src/globalDirectives.js:Zone.Identifier | 3 - .../src/layout/Content.vue:Zone.Identifier | 3 - .../layout/ContentFooter.vue:Zone.Identifier | 3 - .../DashboardLayout.vue:Zone.Identifier | 3 - .../src/layout/MobileMenu.vue:Zone.Identifier | 3 - .../src/layout/TopNavbar.vue:Zone.Identifier | 3 - .../light-bootstrap-main.js:Zone.Identifier | 3 - .../src/main.js:Zone.Identifier | 3 - .../src/pages/Icons.vue:Zone.Identifier | 3 - .../src/pages/Maps.vue:Zone.Identifier | 3 - .../src/pages/Maps/API_KEY.js:Zone.Identifier | 3 - .../pages/NotFoundPage.vue:Zone.Identifier | 3 - .../pages/Notifications.vue:Zone.Identifier | 3 - .../src/pages/Overview.vue:Zone.Identifier | 3 - .../src/pages/TableList.vue:Zone.Identifier | 3 - .../src/pages/TableList2.vue | 71 ++++++++++--------- .../src/pages/TableList3.vue | 30 ++++---- .../src/pages/Typography.vue:Zone.Identifier | 3 - .../src/pages/Upgrade.vue:Zone.Identifier | 3 - .../src/pages/UserProfile.vue:Zone.Identifier | 3 - .../EditProfileForm.vue:Zone.Identifier | 3 - .../UserProfile/UserCard.vue:Zone.Identifier | 3 - .../registerServiceWorker.js:Zone.Identifier | 3 - .../src/routes/routes.js | 30 ++++---- .../src/routes/routes.js:Zone.Identifier | 3 - 44 files changed, 90 insertions(+), 204 deletions(-) delete mode 100644 vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier delete mode 100644 vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier diff --git a/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/App.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/css/demo.css:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.eot:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.svg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.ttf:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff2:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/assets/fonts/nucleo-icons.woff:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/BaseDropdown.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseCheckbox.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseInput.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Inputs/BaseRadio.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notification.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/Notifications.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/NotificationPlugin/index.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue b/vue-light-bootstrap-dashboard-master/src/components/Table.vue index 000c85e..70ea62c 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/Table.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/Table.vue @@ -3,35 +3,40 @@ - {{column}} + {{ column }} - - - {{itemValue(item, column)}} - - + + + {{ itemValue(item, column) }} + + + + + \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/Table.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/components/index.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/directives/click-ouside.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalComponents.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/globalDirectives.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/Content.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/ContentFooter.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/MobileMenu.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/layout/TopNavbar.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/light-bootstrap-main.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/main.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Icons.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Maps/API_KEY.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/NotFoundPage.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Notifications.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Overview.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList2.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList2.vue index cc24c5a..829f704 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList2.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList2.vue @@ -1,43 +1,42 @@ - \ No newline at end of file diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue index cc24c5a..6cdcb7d 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue @@ -7,12 +7,12 @@ body-classes="table-full-width table-responsive" > + :columns="orderDetails.columns" + :data="orderDetails.filteredData"> @@ -36,33 +36,37 @@ export default { data() { return { searchQuery: '', - orders: { - columns: ['주문 번호', '주문 금액'], + orderDetails: { + columns: ['주문 상품(코드)', '상품 등급', '주문 금액'], data: [], filteredData: [] } }; }, mounted() { - this.fetchOrderList(); + this.fetchOrderDetailList(); }, methods: { // API 엔드포인트 URL 생성 //const apiUrl = ; - fetchOrderList(){ + fetchOrderDetailList(){ // API에서 주문 목록을 가져와서 orders 배열에 할당 - axios.get(`http://localhost:8080/api/orders/customer/${this.$route.params.customerCode}`) + const orderNumber = this.$route.params.orderNumber; + // Use the orderNumber variable to fetch data + axios.get(`http://localhost:8080/api/order/detail/${orderNumber}`) .then(response => { - this.orders.data = response.data.map(order => { + this.orderDetails.data = response.data.map(orderDetail => { return { - '주문 번호': order.orderNumber, - '주문 금액': order.orderPrice + '주문 번호': orderDetail.orderNumber, + '주문 금액': orderDetail.orderPrice, + '주문 상품(코드)': orderDetail.goodsCode, + '상품 등급': orderDetail.goodsGrade }; }); - this.orders.filteredData = this.orders.data; + this.orderDetails.filteredData = this.orderDetails.data; }) .catch(error => { - console.error("창고 목록을 가져오는 데 실패했습니다.", error); + console.error("주문 상세 목록을 가져오는 데 실패했습니다.", error); }); } } diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Typography.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/Upgrade.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/EditProfileForm.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/pages/UserProfile/UserCard.vue:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/registerServiceWorker.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js b/vue-light-bootstrap-dashboard-master/src/routes/routes.js index 6a8e2a2..0659f92 100644 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js +++ b/vue-light-bootstrap-dashboard-master/src/routes/routes.js @@ -13,7 +13,7 @@ import Notifications from 'src/pages/Notifications.vue' import Upgrade from 'src/pages/Upgrade.vue' import BusinessTable from 'src/pages/TableList1.vue' import OrderList from 'src/pages/TableList2.vue' -import OrderDetailList from 'src/pages/TableList3.vue' +import OrderDetail from 'src/pages/TableList3.vue' const routes = [ { @@ -80,21 +80,15 @@ const routes = [ component: BusinessTable }, { - path: '/orders', // 라우트 경로에 매개변수를 추가합니다. - component: OrderList, - children: [ - { - path: 'customer/:customerCode', - name: 'OrderList', - component: OrderList - }, - { - path: 'detail/:orderNumber', - name: 'OrderDetailList', - component: OrderDetailList, - props: true - } - ] + path: '/orders/customer/:customerCode', + name: 'OrderList', + component: OrderList + }, + { + path: '/orders/detail/:orderNumber', + name: 'OrderDetail', + component: OrderDetail, + props: true }, { path: '*', component: NotFound } ] @@ -104,8 +98,8 @@ const routes = [ * The specified component must be inside the Views folder * @param {string} name the filename (basename) of the view to load. function view(name) { - var res= require('../components/Dashboard/Views/' + name + '.vue'); - return res; +var res= require('../components/Dashboard/Views/' + name + '.vue'); +return res; };**/ export default routes diff --git a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier b/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/src/routes/routes.js:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip From 2b90c8d8312f7e3f2f44e22fc257f420f353bef4 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Tue, 26 Mar 2024 17:47:27 +0900 Subject: [PATCH 018/101] update 24-03-26 / connecting with backend(jwt) --- main-Login/.gitignore | 52 + main-Login/LICENSE | 674 + main-Login/README.md | 35 + main-Login/cypress.json | 1 + main-Login/cypress/fixtures/example.json | 5 + .../integration/Programe/Loginpage.spec.js | 38 + .../integration/Programe/Samplelogin.js | 23 + main-Login/cypress/plugins/index.js | 22 + main-Login/cypress/support/commands.js | 39 + main-Login/cypress/support/index.js | 20 + main-Login/images/demo.gif | Bin 0 -> 187052 bytes main-Login/package-lock.json | 16833 ++++++++++++++++ main-Login/package.json | 24 + main-Login/public/favicon.ico | Bin 0 -> 4286 bytes main-Login/public/index.html | 17 + main-Login/src/App.vue | 66 + main-Login/src/assets/logo.png | Bin 0 -> 6849 bytes main-Login/src/components/HelloWorld.vue | 32 + main-Login/src/main.js | 10 + main-Login/src/router/index.js | 45 + main-Login/src/views/About.vue | 5 + main-Login/src/views/Home.vue | 18 + main-Login/src/views/Login.vue | 77 + main-Login/src/views/Secure.vue | 22 + 24 files changed, 18058 insertions(+) create mode 100644 main-Login/.gitignore create mode 100644 main-Login/LICENSE create mode 100644 main-Login/README.md create mode 100644 main-Login/cypress.json create mode 100644 main-Login/cypress/fixtures/example.json create mode 100644 main-Login/cypress/integration/Programe/Loginpage.spec.js create mode 100644 main-Login/cypress/integration/Programe/Samplelogin.js create mode 100644 main-Login/cypress/plugins/index.js create mode 100644 main-Login/cypress/support/commands.js create mode 100644 main-Login/cypress/support/index.js create mode 100644 main-Login/images/demo.gif create mode 100644 main-Login/package-lock.json create mode 100644 main-Login/package.json create mode 100644 main-Login/public/favicon.ico create mode 100644 main-Login/public/index.html create mode 100644 main-Login/src/App.vue create mode 100644 main-Login/src/assets/logo.png create mode 100644 main-Login/src/components/HelloWorld.vue create mode 100644 main-Login/src/main.js create mode 100644 main-Login/src/router/index.js create mode 100644 main-Login/src/views/About.vue create mode 100644 main-Login/src/views/Home.vue create mode 100644 main-Login/src/views/Login.vue create mode 100644 main-Login/src/views/Secure.vue diff --git a/main-Login/.gitignore b/main-Login/.gitignore new file mode 100644 index 0000000..4ef2c1c --- /dev/null +++ b/main-Login/.gitignore @@ -0,0 +1,52 @@ +## Mac + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +## Vue.js + +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/main-Login/LICENSE b/main-Login/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/main-Login/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/main-Login/README.md b/main-Login/README.md new file mode 100644 index 0000000..4d267b7 --- /dev/null +++ b/main-Login/README.md @@ -0,0 +1,35 @@ +# vue-js-simple-login-app +A simple user login app built using Vue.js. This app allows access to secure portion of website only after the user has authenticated. + +## Prerequisites + +- Vue.js cli installed. To install cli run this command `npm install -g @vue/cli`. To check if the cli is already installed run the following command `vue --version`. + +## Running Project + +### Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). + +## Test + +![Demo Gif](/images/demo.gif) + +## Useful Links + +- https://cli.vuejs.org/guide/installation.html +- https://www.thepolyglotdeveloper.com/2018/04/simple-user-login-vuejs-web-application/ \ No newline at end of file diff --git a/main-Login/cypress.json b/main-Login/cypress.json new file mode 100644 index 0000000..3685436 --- /dev/null +++ b/main-Login/cypress.json @@ -0,0 +1 @@ +{"chromeWebSecurity": false} diff --git a/main-Login/cypress/fixtures/example.json b/main-Login/cypress/fixtures/example.json new file mode 100644 index 0000000..02e4254 --- /dev/null +++ b/main-Login/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/main-Login/cypress/integration/Programe/Loginpage.spec.js b/main-Login/cypress/integration/Programe/Loginpage.spec.js new file mode 100644 index 0000000..fbea49f --- /dev/null +++ b/main-Login/cypress/integration/Programe/Loginpage.spec.js @@ -0,0 +1,38 @@ +/// + +describe("Login page, Environment: Staging, Build No: Bxx", () => { + beforeEach("Open the Krysp Application", () => { + cy.visit("https://flow.iopulsedev.net/connect/login", { + failOnStatusCode: false, + }); + }); + it("Login page components", () => { + cy.contains("CUSTOMER CONNECT"); + cy.get('button[type="button"]').should("contain", "Sign Up"); + cy.get('button[type="button"]').click(); + cy.get('button[type="submit"]').should("contain", " Create an account "); + cy.go("back"); + cy.contains("LOGIN TO CUSTOMER CONNECT"); + cy.get("input[type='email']").type("Email@gmail.com").clear(); + cy.get("input[type='password']").type("password").clear(); + cy.contains("Forgot your password ?").click(); + cy.get('p[class="login-title"]').should("contain", " Reset Password "); + cy.go("back"); + }); + + it("Privacy", () => { + cy.contains("privacy policy").invoke("removeAttr", "target").click(); + cy.get('span[style="font-family:open sans,sans-serif;"]').should( + "contain", + "PRIVACY" + ); + }); + + it("Terms & conditions", () => { + cy.contains("terms & conditions").invoke("removeAttr", "target").click(); + cy.get('span[style="font-family:open sans,sans-serif;"]').should( + "contain", + "TERMS" + ); + }); +}); diff --git a/main-Login/cypress/integration/Programe/Samplelogin.js b/main-Login/cypress/integration/Programe/Samplelogin.js new file mode 100644 index 0000000..7d93aff --- /dev/null +++ b/main-Login/cypress/integration/Programe/Samplelogin.js @@ -0,0 +1,23 @@ +/// + +describe("Login Process", () => { + beforeEach("Open the Application", () => { + cy.visit("http://localhost:8080/login", { + failOnStatusCode: false, + }); + }); + + it("Login",()=>{ + cy.get('input[id="username"]').type("ameyrupji"); + cy.get('input[id="password"]').type("P@ssword!"); + cy.get('button[type="button"]').click(); + cy.get('div[class="secure"]').should('contain','This is an secure page') + }); + + it("Login failed case",()=>{ + cy.get('input[id="username"]').type("ameupji"); + cy.get('input[id="password"]').type("Pord!"); + cy.get('button[type="button"]').click(); + cy.get('div[class="secure"]').should('contain','This is an secure page') + }); +}); \ No newline at end of file diff --git a/main-Login/cypress/plugins/index.js b/main-Login/cypress/plugins/index.js new file mode 100644 index 0000000..59b2bab --- /dev/null +++ b/main-Login/cypress/plugins/index.js @@ -0,0 +1,22 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/main-Login/cypress/support/commands.js b/main-Login/cypress/support/commands.js new file mode 100644 index 0000000..e805976 --- /dev/null +++ b/main-Login/cypress/support/commands.js @@ -0,0 +1,39 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) + +Cypress.on("uncaught:exception", (err, runnable) => { + // returning false here prevents Cypress from + // failing the test + return false; + }); + + Cypress.Commands.add("manualLogin", (email, password) => { + //cy.visit("https://flow.iopulsedev.net/connect/login",{failOnStatusCode: false}); + cy.get("input[type='email']").type(email); + cy.get("input[type='password']").type(password); + cy.contains("Login").click(); + }); + \ No newline at end of file diff --git a/main-Login/cypress/support/index.js b/main-Login/cypress/support/index.js new file mode 100644 index 0000000..d68db96 --- /dev/null +++ b/main-Login/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/main-Login/images/demo.gif b/main-Login/images/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6c2756023434296f1d9851fe3c38d9eacb36507 GIT binary patch literal 187052 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%0A|2}471352_aEYOGEiJsn(U> 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
+ + + diff --git a/main-Login/src/App.vue b/main-Login/src/App.vue new file mode 100644 index 0000000..8f248d8 --- /dev/null +++ b/main-Login/src/App.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/main-Login/src/assets/logo.png b/main-Login/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 +
+

{{ msg }}

+
+ + + + + + diff --git a/main-Login/src/main.js b/main-Login/src/main.js new file mode 100644 index 0000000..660e641 --- /dev/null +++ b/main-Login/src/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './App.vue' +import router from './router' + +Vue.config.productionTip = false + +new Vue({ + router, + render: function (h) { return h(App) } +}).$mount('#app') diff --git a/main-Login/src/router/index.js b/main-Login/src/router/index.js new file mode 100644 index 0000000..3ec39c7 --- /dev/null +++ b/main-Login/src/router/index.js @@ -0,0 +1,45 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' +import Home from '../views/Home.vue' + +Vue.use(VueRouter) + +const routes = [ + { + path: '/', + name: 'Home', + component: Home + }, + { + path: '/about', + name: 'About', + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: function () { + return import(/* webpackChunkName: "about" */ '../views/About.vue') + } + }, + { + path: '/secure', + name: 'Secure', + component: function () { + return import(/* webpackChunkName: "about" */ '../views/Secure.vue') + } + }, + { + path: '/login', + name: 'Login', + component: function () { + return import(/* webpackChunkName: "about" */ '../views/Login.vue') + } + } +] + +const router = new VueRouter({ + mode: 'history', + base: process.env.BASE_URL, + routes +}) + +export default router diff --git a/main-Login/src/views/About.vue b/main-Login/src/views/About.vue new file mode 100644 index 0000000..7869324 --- /dev/null +++ b/main-Login/src/views/About.vue @@ -0,0 +1,5 @@ + diff --git a/main-Login/src/views/Home.vue b/main-Login/src/views/Home.vue new file mode 100644 index 0000000..15bc8c1 --- /dev/null +++ b/main-Login/src/views/Home.vue @@ -0,0 +1,18 @@ + + + diff --git a/main-Login/src/views/Login.vue b/main-Login/src/views/Login.vue new file mode 100644 index 0000000..918abf7 --- /dev/null +++ b/main-Login/src/views/Login.vue @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main-Login/src/views/Secure.vue b/main-Login/src/views/Secure.vue new file mode 100644 index 0000000..903adc8 --- /dev/null +++ b/main-Login/src/views/Secure.vue @@ -0,0 +1,22 @@ + + + + \ No newline at end of file From ad2de770421d087ec3908b4c4767a38a22c56ff8 Mon Sep 17 00:00:00 2001 From: qkralsgml78 Date: Wed, 27 Mar 2024 09:37:27 +0900 Subject: [PATCH 019/101] =?UTF-8?q?[Feat]=20=EA=B1=B0=EB=9E=98=EC=B2=98=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/CustomerList.vue | 97 +++++++++++++++++++ .../src/layout/DashboardLayout.vue | 5 + .../src/routes/routes.js | 17 ++-- 3 files changed, 109 insertions(+), 10 deletions(-) create mode 100644 vue-light-bootstrap-dashboard-master/src/components/CustomerList.vue diff --git a/vue-light-bootstrap-dashboard-master/src/components/CustomerList.vue b/vue-light-bootstrap-dashboard-master/src/components/CustomerList.vue new file mode 100644 index 0000000..dcb28bf --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/CustomerList.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue index 8fdd08f..e396ff5 100644 --- a/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue +++ b/vue-light-bootstrap-dashboard-master/src/layout/DashboardLayout.vue @@ -30,6 +30,11 @@

Notifications

+ + +

거래처 목록

+
+ +
- + + :disabled="currentPage <= 1"> < diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue index 781d688..d98e885 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue @@ -3,18 +3,48 @@
- + - + +
+
+
+ + +
+
+
+ +
+
+ + +
+ + + + + {{ number }} + + + + +
@@ -34,9 +64,15 @@ export default { }, data() { return { + currentPage: 1, + itemsPerPage: 30, searchQuery: '', + startDate: '', + endDate: '', + selectedCustomerCode: '', + customers: [], orders: { - columns: ['주문 번호', '주문 금액', '주문 일자', '판매처 코드'], + columns: ['주문 번호', '고객명', '주문 금액(원)', '주문 일자', '주문 상태'], data: [], filteredData: [] } @@ -44,21 +80,73 @@ export default { }, mounted() { this.fetchOrderList(); + this.fetchCustomerList(); }, methods: { + fetchCustomerList() { + const businessId = this.$route.params.businessId; + axios.get(`http://localhost:8080/api/contact/busId/${businessId}`) + .then(response => { + this.customers = response.data.map(customer => ({ + contactName: customer.contactName, + contactCode: customer.contactCode + })); + }) + .catch(error => { + console.error("고객 목록을 가져오는 데 실패했습니다.", error); + }); + }, + filterOrders() { + // 선택된 고객 코드에 해당하는 주문들만 필터링 + const filteredByCustomer = this.orders.data.filter(order => { + console.log(this.selectedCustomerCode); + return this.selectedCustomerCode === '' || order['판매처 코드'] === this.selectedCustomerCode; + }); + + // 이미 고객 코드로 필터링된 주문들을 대상으로 날짜에 따라 추가 필터링 + const filteredByDateAndCustomer = filteredByCustomer.filter(order => { + const orderDate = new Date(order['주문 일자']); + const startDate = this.startDate ? new Date(this.startDate) : new Date('1970-01-01'); + const endDate = this.endDate ? new Date(this.endDate) : new Date(); + return orderDate >= startDate && orderDate <= endDate; + }); + + // 페이지네이션을 고려하여 최종적으로 표시될 데이터 계산 + const startIndex = (this.currentPage - 1) * this.itemsPerPage; + const endIndex = startIndex + this.itemsPerPage; + + // 최종적으로 필터링된 데이터를 filteredData에 할당 + this.orders.filteredData = filteredByDateAndCustomer.slice(startIndex, endIndex); + + // 필터링 결과가 있을 때만 현재 페이지를 재설정 + if (this.orders.filteredData.length > 0) { + this.currentPage = 1; + } else { + // 필터링된 데이터가 없다면, 사용자에게 표시될 데이터가 없음을 알림 + console.log("No orders found for the selected customer within the specified date range."); + } +}, + changePage(page) { + this.currentPage = page; + this.filterOrders(); + }, fetchOrderList() { const businessId = this.$route.params.businessId; - axios.get(`http://localhost:8080/api/orders/id/${businessId}`) + axios.get(`http://localhost:8080/api/orders/busId/${businessId}`) .then(response => { this.orders.data = response.data.map(order => { return { '주문 번호': order.orderNumber, - '주문 금액': order.orderPrice, + '고객명': order.customerName, + '주문 금액(원)': order.orderPrice, '주문 일자': order.orderDate, + '주문 상태': order.orderStatus, '판매처 코드': order.customerCode }; - }); - this.orders.filteredData = this.orders.data; + }) + .sort((a, b) => new Date(b['주문 일자']) - new Date(a['주문 일자'])); + this.filterOrders(); + }) .catch(error => { console.error("주문 목록을 가져오는 데 실패했습니다.", error); @@ -69,10 +157,59 @@ export default { // 주문 상세 페이지 URL로 이동 window.location.href = `http://localhost:8080/#/orders/detail/${orderNumber}`; } + }, + computed: { + totalPages() { + return Math.ceil(this.orders.data.length / this.itemsPerPage); + }, + pageNumbers() { + let numbers = []; + for (let i = 1; i <= this.totalPages; i++) { + numbers.push(i); + } + return numbers; + } } }; + \ No newline at end of file From 5a2a5a25795712fa137a14b7db0546d85e60aee1 Mon Sep 17 00:00:00 2001 From: ae-chae Date: Tue, 9 Apr 2024 01:58:21 +0900 Subject: [PATCH 069/101] [Chore] --- .../src/components/BusinessTable.vue | 41 +++++ .../src/pages/TableList3.vue | 156 +++++++++++------- .../src/pages/TableList6.vue | 2 +- 3 files changed, 142 insertions(+), 57 deletions(-) create mode 100644 vue-light-bootstrap-dashboard-master/src/components/BusinessTable.vue diff --git a/vue-light-bootstrap-dashboard-master/src/components/BusinessTable.vue b/vue-light-bootstrap-dashboard-master/src/components/BusinessTable.vue new file mode 100644 index 0000000..3d24971 --- /dev/null +++ b/vue-light-bootstrap-dashboard-master/src/components/BusinessTable.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue index 6cdcb7d..e9fc6c2 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList3.vue @@ -1,27 +1,30 @@ - diff --git a/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue b/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue index d98e885..7d4018f 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/TableList6.vue @@ -54,7 +54,7 @@ - \ No newline at end of file + +#login button:last-child { + margin-right: 150px; !* 마지막 버튼의 오른쪽 여백을 없앱니다. *! +}*/ + diff --git a/main-Login/src/views/Login2.vue b/main-Login/src/views/Login2.vue new file mode 100644 index 0000000..cd34f4c --- /dev/null +++ b/main-Login/src/views/Login2.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/main-Login/src/views/Login3.vue b/main-Login/src/views/Login3.vue index 328d017..da49474 100644 --- a/main-Login/src/views/Login3.vue +++ b/main-Login/src/views/Login3.vue @@ -74,8 +74,17 @@ export default { usernameExists: false, showTooltip: false, } + },mounted() { + this.checkAndStoreCode(); }, methods: { + checkAndStoreCode() { + const urlParams = new URLSearchParams(window.location.search); + const code = urlParams.get('code'); + if (code) { + localStorage.setItem('code', code); + } + }, async login() { try { const formData = new FormData(); diff --git a/main-Login/src/views/Register.vue b/main-Login/src/views/Register.vue index 20cf281..b7aac0d 100644 --- a/main-Login/src/views/Register.vue +++ b/main-Login/src/views/Register.vue @@ -1,5 +1,43 @@ diff --git a/main-Login/src/views/Register1.vue b/main-Login/src/views/Register1.vue new file mode 100644 index 0000000..20cf281 --- /dev/null +++ b/main-Login/src/views/Register1.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/main-Login/src/views/Secure.vue b/main-Login/src/views/Secure.vue index c011ee3..d3f1669 100644 --- a/main-Login/src/views/Secure.vue +++ b/main-Login/src/views/Secure.vue @@ -4,8 +4,7 @@

이 화면을 중간 화면으로 만들어서 이 화면을 통해서 우리 원래 대쉬보드로 옮길 수 있게 만들 예정입니다.

- - +
From 2e22a467c5431afabdb75431b582c980c7a68360 Mon Sep 17 00:00:00 2001 From: qkralsgml78 Date: Tue, 9 Apr 2024 16:14:58 +0900 Subject: [PATCH 071/101] =?UTF-8?q?[Fix]=20axios=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/CustomerDetail.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vue-light-bootstrap-dashboard-master/src/pages/CustomerDetail.vue b/vue-light-bootstrap-dashboard-master/src/pages/CustomerDetail.vue index cb8cb7e..d468067 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/CustomerDetail.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/CustomerDetail.vue @@ -149,7 +149,7 @@ export default { aboutMe: this.customer.aboutMe, }; - const response = await axios.put(`http://localhost:8080/api/contact/customer/${contactCode}`, updatedData); + const response = await axios.put(`http://localhost:8080/api/contact/customers/${contactCode}`, updatedData); if (response.status === 200) { this.customer = { ...response.data }; From 423f6fbd120683cc64d7fe9764727e6db1a673a1 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Tue, 9 Apr 2024 16:16:18 +0900 Subject: [PATCH 072/101] change error logic --- main-Login/src/views/Login.vue | 2 +- main-Login/src/views/Register.vue | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/main-Login/src/views/Login.vue b/main-Login/src/views/Login.vue index 273c378..a2eeea0 100644 --- a/main-Login/src/views/Login.vue +++ b/main-Login/src/views/Login.vue @@ -35,7 +35,7 @@
-->



- + diff --git a/main-Login/src/views/Register.vue b/main-Login/src/views/Register.vue index b7aac0d..6a503dd 100644 --- a/main-Login/src/views/Register.vue +++ b/main-Login/src/views/Register.vue @@ -88,7 +88,7 @@ export default { formData.append("username", this.input.username); // Add username to FormData formData.append("password", this.input.password); // Add password to FormData } - else{ + /*else{ Swal.fire({ title: 'Password Error!', text: '비밀번호가 너무 짧습니다.', @@ -96,7 +96,7 @@ export default { confirmButtonText: '확인' }) console.log("비밀번호가 너무 단순합니다.") - } + }*/ const response = await axios.post('http://localhost:8080/join', formData); // Assuming your backend returns some data upon successful registration console.log("Registered successfully!"); @@ -111,12 +111,24 @@ export default { this.$router.replace({ name: "Login" }); } catch (error) { - Swal.fire({ - title: 'Username Exist!', - text: '이미 존재하는 username입니다.', - icon: 'error', - confirmButtonText: '확인' - }) + if(!reg.test(this.input.password)){ + + Swal.fire({ + title: 'Password Error!', + text: '비밀번호를 확인해주세요.', + icon: 'error', + confirmButtonText: '확인' + }) + console.log("비밀번호가 너무 단순합니다.") + } + else { + Swal.fire({ + title: 'Username Exist!', + text: '이미 존재하는 username입니다.', + icon: 'error', + confirmButtonText: '확인' + }) + } console.error("Registration failed:", error.response.data); // Handle registration failure (display error message, clear inputs, etc.) } From 6b0690a513324400c4ff136be1e4053aa056e650 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Tue, 9 Apr 2024 16:24:13 +0900 Subject: [PATCH 073/101] commit bug fix --- main-Login/src/views/Login.vue | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/main-Login/src/views/Login.vue b/main-Login/src/views/Login.vue index a2eeea0..bcd43dd 100644 --- a/main-Login/src/views/Login.vue +++ b/main-Login/src/views/Login.vue @@ -30,12 +30,10 @@ Authenticated Image - +



- + + From bc59e5b023b379e9e9091446c393ab62195d1749 Mon Sep 17 00:00:00 2001 From: CoffeerLatte Date: Tue, 9 Apr 2024 17:52:47 +0900 Subject: [PATCH 074/101] modified navigate bar --- main-Login/src/App.vue | 94 ++++++++++++++++++------------- main-Login/src/Appex.vue | 80 ++++++++++++++++++++++++++ main-Login/src/router/index.js | 11 ++-- main-Login/src/views/Login.vue | 4 +- main-Login/src/views/Register.vue | 24 ++------ 5 files changed, 147 insertions(+), 66 deletions(-) create mode 100644 main-Login/src/Appex.vue diff --git a/main-Login/src/App.vue b/main-Login/src/App.vue index 38067d4..d02cf51 100644 --- a/main-Login/src/App.vue +++ b/main-Login/src/App.vue @@ -1,8 +1,12 @@ - - + + + + + - - - - @@ -77,33 +68,25 @@ export default { }); }, totalAmount() { - return this.goodsList.data.reduce((acc, goods) => { - return acc + (goods['가격(BOX)'] * goods['주문 수량'].value); - }, 0); - } + return this.goodsList.data.reduce((acc, goods) => { + return acc + (goods['가격(BOX)'] * goods['주문 수량'].value); + }, 0); + } }, watch: { selectedStorageCode(newVal) { if (newVal !== '') { this.fetchGoodsList(newVal); } - }, - searchQuery(newVal) { - if (newVal !== '' && this.selectedStorageCode !== '') { - this.fetchGoodsList(this.selectedStorageCode); } - } }, mounted() { this.fetchOrderList(); }, methods: { updateTotalAmount(amount) { - this.totalAmount = amount; - }, - updateTitle(selectedItem) { - this.dropdownTitle = selectedItem; // 선택된 항목으로 타이틀 업데이트 - }, + this.totalAmount = amount; + }, selectStorageCode(code) { this.selectedStorageCode = code; this.dropdownTitle = code; // 드롭다운 타이틀 업데이트 @@ -127,125 +110,75 @@ export default { }, fetchGoodsList(storageCode) { axios.get(`http://localhost:8080/api/total/storage/${storageCode}`) - .then(response => { - - }) - - - axios.get(`http://localhost:8080/api/total/storage/${storageCode}`) - .then(response => { - const filteredData = response.data.filter(goods => goods.goodsName.toLowerCase().includes(this.searchQuery.toLowerCase())); - this.goodsList.data = filteredData.map(goods => ({ - ...goods, - visible: false, - '상품 코드': goods.goodsCode, - '상품명': goods.goodsName, - '상품 등급': goods.goodsGrade, - '주문 가능 수량': goods.totalQuantity, - '가격(BOX)': Math.ceil(goods.inputPrice * (100 + goods.marginRate) / 100), - '주문 수량': 0, - '금액(원)' : 0 - })); - }) - .catch(error => { - console.error(`There was an error fetching the goods list for storageCode ${storageCode}:`, error); - }); - }, - makeRowPermanent(goodsCode) { - const item = this.goodsList.data.find(item => item['상품 코드'] === goodsCode); - if (item) item.visible = true; - }, - // submitOrder() { - // if (this.totalAmount <= 0) { - // window.alert("총 금액이 0원입니다. 주문을 등록할 수 없습니다."); - // return; - // } - // //const customerCode = this.$route.params.customerCode; - // const orderData = { - // customerCode: "CON001", - // storageCode: this.selectedStorageCode, - // orderPrice: this.totalAmount, - // adjustmentStatus: "미정산" - // }; - // axios.post('/api/orders/post', orderData) - // .then(response => { - // console.log('Order created!', response.data); - // const createdOrderNumber = response.data.orderNumber; - // console.log(createdOrderNumber); - - // const nonZeroItems = this.goodsList.data.filter(item => item['주문 수량'] > 0); - - // nonZeroItems.forEach(item => { - // const orderProductData = { - // orderNumber: createdOrderNumber, - // goodsCode: item['상품 코드'], - // goodsGrade: item['상품 등급'], - // orderQuantity: item['주문 수량'], - // orderPrice: item['금액(원)'] - // }; - // axios.post('/api/order/detail/post', orderProductData) - // .then(res => { - // console.log('Item added with the order number', res.data); - // }) - // .catch(err => { - // console.error('Error posting item:', err); - // }); - // }); - // }) - // .catch(error => { - // console.error('Error creating order:', error); - // }); - // } - submitOrder() { - if (this.totalAmount <= 0) { - window.alert("총 금액이 0원입니다. 주문을 등록할 수 없습니다."); - return; - } - - const orderData = { - customerCode: "CON001", - storageCode: this.selectedStorageCode, - orderPrice: this.totalAmount, - adjustmentStatus: "미정산", - orderStatus: "주문 완료" - }; - - axios.post('/api/orders/post', orderData) - .then(response => { - console.log('Order created!', response.data); - const createdOrderNumber = response.data.orderNumber; - console.log(createdOrderNumber); - - const nonZeroItems = this.goodsList.data.filter(item => item['주문 수량'] > 0); - - // 모든 비어있지 않은 항목에 대해 주문 세부 정보를 게시합니다. - const postOrderDetailsPromises = nonZeroItems.map(item => { - const orderProductData = { - orderNumber: createdOrderNumber, - goodsCode: item['상품 코드'], - goodsGrade: item['상품 등급'], - orderQuantity: item['주문 수량'], - orderPrice: item['금액(원)'] - }; - - return axios.post('/api/order/detail/post', orderProductData); - }); - - // 모든 주문 세부 정보 요청이 성공적으로 완료되면, - Promise.all(postOrderDetailsPromises).then(() => { - window.alert("주문이 성공적으로 등록되었습니다."); - // 주문 등록 후 필요한 상태 초기화 또는 페이지 이동 로직 추가 - }).catch(err => { - console.error('Error posting order details:', err); - window.alert("주문 세부 정보 등록 중 문제가 발생했습니다."); - }); - - }) - .catch(error => { - console.error('Error creating order:', error); - window.alert("주문 등록 중 문제가 발생했습니다."); - }); -} + .then(response => { + this.goodsList.data = response.data.map(goods => ({ + ...goods, + visible: false, // Initially, rows are not visible + '상품 코드': goods.goodsCode, + '상품명': goods.goodsName, + '상품 등급': goods.goodsGrade, + '주문 가능 수량': goods.totalQuantity, + '가격(BOX)': Math.ceil(goods.inputPrice * (100 + goods.marginRate) / 100), + '주문 수량': 0, + '금액(원)': 0 + })); + }) + .catch(error => { + console.error(`There was an error fetching the goods list for storageCode ${storageCode}:`, error); + }); + }, + makeRowPermanent(goodsCode) { + const itemIndex = this.goodsList.data.findIndex(item => item['상품 코드'] === goodsCode); + if (itemIndex > -1) { + const item = this.goodsList.data[itemIndex]; + item.visible = true; // 항목을 보이게 설정 + this.goodsList.data.splice(itemIndex, 1); // 원래 위치에서 항목 제거 + this.goodsList.data.unshift(item); // 배열의 시작 부분에 항목 추가 + } + }, + submitOrder() { + if (this.totalAmount <= 0) { + window.alert("총 금액이 0원입니다. 주문을 등록할 수 없습니다."); + return; + } + //const customerCode = this.$route.params.customerCode; + const orderData = { + customerCode: "CON001", + storageCode: this.selectedStorageCode, + orderPrice: this.totalAmount, + adjustmentStatus: "미정산", + orderStatus: "주문 완료" + }; + axios.post('/api/orders/post', orderData) + .then(response => { + console.log('Order created!', response.data); + const createdOrderNumber = response.data.orderNumber; + console.log(createdOrderNumber); + + const nonZeroItems = this.goodsList.data.filter(item => item['주문 수량'] > 0); + + nonZeroItems.forEach(item => { + const orderProductData = { + orderNumber: createdOrderNumber, + goodsCode: item['상품 코드'], + goodsGrade: item['상품 등급'], + orderQuantity: item['주문 수량'], + orderPrice: item['금액(원)'] + }; + axios.post('/api/order/detail/post', orderProductData) + .then(res => { + console.log('Item added with the order number', res.data); + }) + .catch(err => { + console.error('Error posting item:', err); + }); + + }); + }) + .catch(error => { + console.error('Error creating order:', error); + }); + } } }; @@ -255,6 +188,7 @@ export default { .dropdown .dropdown-toggle { cursor: pointer; } + .total-amount h4 { margin-top: 20px; font-weight: bold; From 60c72dc40da4e359ebf8bab3fd3b333ba903df9f Mon Sep 17 00:00:00 2001 From: seulle Date: Thu, 11 Apr 2024 18:10:39 +0900 Subject: [PATCH 080/101] [Fix] --- .../package.json | 3 +- .../src/components/CStoragePage.vue | 276 ++++++++---------- .../src/components/InventoryAll.vue | 10 +- 3 files changed, 135 insertions(+), 154 deletions(-) diff --git a/vue-light-bootstrap-dashboard-master/package.json b/vue-light-bootstrap-dashboard-master/package.json index feb88be..b54b5a7 100644 --- a/vue-light-bootstrap-dashboard-master/package.json +++ b/vue-light-bootstrap-dashboard-master/package.json @@ -22,7 +22,8 @@ "v-tooltip": "2.0.0-rc.33", "vue": "2.7.14", "vue-router": "3.0.2", - "vue2-google-maps": "0.10.7" + "vue2-google-maps": "0.10.7", + "vuedraggable": "^2.24.3" }, "devDependencies": { "@vue/cli-plugin-babel": "3.12.1", diff --git a/vue-light-bootstrap-dashboard-master/src/components/CStoragePage.vue b/vue-light-bootstrap-dashboard-master/src/components/CStoragePage.vue index 70a08e9..aa22730 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/CStoragePage.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/CStoragePage.vue @@ -1,56 +1,90 @@ - - - diff --git a/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue index 219fd09..0fa3620 100644 --- a/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue +++ b/vue-light-bootstrap-dashboard-master/src/components/InventoryAll.vue @@ -66,7 +66,7 @@

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⁢CibPU?;{CGQKJ@b*3m*wI)D0lX0IPFi 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.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "dev": true, + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "dev": true, + "peer": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@cypress/request/node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/@cypress/request/node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@sideway/address": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.2.tgz", + "integrity": "sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.1.tgz", + "integrity": "sha512-8cLpHoQVYHoI4EjUG4+gbuUI9xxhkP5Vz/o/WLAkAAs//+1vE/A5AjCdLeQYGR9X6T4+b/kci2ArIpSSsRi8/Q==", + "dev": true + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.1.tgz", + "integrity": "sha512-Eu56AQUEK0uULgIQotZwi5eijYNBS3+znMc0u/kaI1puW3+f/qP3YCtffp5CeVcG2Kxwrx66XBI6PMHg8hPdmA==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.1" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.1.tgz", + "integrity": "sha512-5J/n+Ht4r2eVuncwCXcZPHzYCz/2haktle4WcggWiKeg3jSQVUJbjviPBs6sOo3y/LG3CEfZMP9bPJjVDbexpQ==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.1.tgz", + "integrity": "sha512-lhTW1d8waZv1VaRSvhE5pWWfkdmAgRTRSluDfyxkehZHMAWi//rd7a9zppN3k9Zr4X3oYVii+u7wR/RcTlr9cQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.1", + "@vue/cli-plugin-router": "^5.0.1", + "@vue/cli-plugin-vuex": "^5.0.1", + "@vue/cli-shared-utils": "^5.0.1", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.1.tgz", + "integrity": "sha512-oL164c3yDhdLHgiFvSkXuP7z0eEY8gqTYzHHbvQJCIBtRZ/0H9Q7xICpAeMZ63lJvS2+fA5bQfv+kPII/kcjmQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "node-ipc": "^9.1.1", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.0.tgz", + "integrity": "sha512-S7HCfCiDHLA+VXKqdZwyRZgoO0R9BnKDnVIoHMq5grl3N86zAu7MB+FBWHr5xOJC8SmvpTLha/2NpfFkFEN/ig==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", + "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", + "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.0", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.0", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.0", + "postcss-merge-rules": "^5.1.0", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.0", + "postcss-minify-params": "^5.1.0", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.0", + "postcss-ordered-values": "^5.1.0", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cypress": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.5.1.tgz", + "integrity": "sha512-H7lUWB3Svr44gz1rNnj941xmdsCljXoJa2cDneAltjI9leKLMQLm30x6jLlpQ730tiVtIbW5HdUmBzPzwzfUQg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cypress/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/cypress/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/cypress/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/cypress/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.8.tgz", + "integrity": "sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==", + "dev": true + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.77", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz", + "integrity": "sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "dev": true, + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getos/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", + "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "dependencies": { + "easy-stack": "^1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "dependencies": { + "launch-editor": "^2.2.1" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": true + }, + "node_modules/mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz", + "integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==", + "dev": true, + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", + "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", + "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", + "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", + "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", + "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", + "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", + "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.12.tgz", + "integrity": "sha512-b0dMK6D7pFicDzSdh+sU0p/gp3n5QAGwjPbgacmYB/eVQpayzf9lKTQLYMnTAbk69fKoXSoVNl/+IkobJblL1A==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/progress-webpack-plugin/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", + "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "dependencies": { + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vue": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", + "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + } + }, + "node_modules/vue-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-router": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz", + "integrity": "sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg==" + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "node_modules/vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "node_modules/webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", + "dev": true + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "dev": true + }, + "@babel/core": { + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", + "dev": true, + "peer": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "dev": true, + "peer": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.3", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.3", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "peer": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true, + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@sideway/address": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "dev": true + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.2.tgz", + "integrity": "sha512-VXI82ykONr5tacHEojnErTQk+KQSoYbW1NB6iz6wUwrNd+BqfkfggQNoNdCqhJSzbNumShPERbM+Pc5zpfhlbw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/cli-overlay": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.1.tgz", + "integrity": "sha512-8cLpHoQVYHoI4EjUG4+gbuUI9xxhkP5Vz/o/WLAkAAs//+1vE/A5AjCdLeQYGR9X6T4+b/kci2ArIpSSsRi8/Q==", + "dev": true + }, + "@vue/cli-plugin-router": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.1.tgz", + "integrity": "sha512-Eu56AQUEK0uULgIQotZwi5eijYNBS3+znMc0u/kaI1puW3+f/qP3YCtffp5CeVcG2Kxwrx66XBI6PMHg8hPdmA==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^5.0.1" + } + }, + "@vue/cli-plugin-vuex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.1.tgz", + "integrity": "sha512-5J/n+Ht4r2eVuncwCXcZPHzYCz/2haktle4WcggWiKeg3jSQVUJbjviPBs6sOo3y/LG3CEfZMP9bPJjVDbexpQ==", + "dev": true, + "requires": {} + }, + "@vue/cli-service": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.1.tgz", + "integrity": "sha512-lhTW1d8waZv1VaRSvhE5pWWfkdmAgRTRSluDfyxkehZHMAWi//rd7a9zppN3k9Zr4X3oYVii+u7wR/RcTlr9cQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.1", + "@vue/cli-plugin-router": "^5.0.1", + "@vue/cli-plugin-vuex": "^5.0.1", + "@vue/cli-shared-utils": "^5.0.1", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + } + }, + "@vue/cli-shared-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.1.tgz", + "integrity": "sha512-oL164c3yDhdLHgiFvSkXuP7z0eEY8gqTYzHHbvQJCIBtRZ/0H9Q7xICpAeMZ63lJvS2+fA5bQfv+kPII/kcjmQ==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "node-ipc": "^9.1.1", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/vue-loader-v15": { + "version": "npm:vue-loader@15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "requires": { + "colors": "1.4.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + } + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.0.tgz", + "integrity": "sha512-S7HCfCiDHLA+VXKqdZwyRZgoO0R9BnKDnVIoHMq5grl3N86zAu7MB+FBWHr5xOJC8SmvpTLha/2NpfFkFEN/ig==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", + "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", + "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.0", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.0", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.0", + "postcss-merge-rules": "^5.1.0", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.0", + "postcss-minify-params": "^5.1.0", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.0", + "postcss-ordered-values": "^5.1.0", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.0" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cypress": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.5.1.tgz", + "integrity": "sha512-H7lUWB3Svr44gz1rNnj941xmdsCljXoJa2cDneAltjI9leKLMQLm30x6jLlpQ730tiVtIbW5HdUmBzPzwzfUQg==", + "dev": true, + "requires": { + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dayjs": { + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.8.tgz", + "integrity": "sha512-wbNwDfBHHur9UOzNUjeKUOJ0fCb0a52Wx0xInmQ7Y8FstyajiV1NmK1e00cxsr9YrE9r7yAChE0VvpuY5Rnlow==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.77", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz", + "integrity": "sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter2": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + }, + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + } + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "peer": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", + "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "requires": { + "read-pkg-up": "^7.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", + "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": true + }, + "mrmime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", + "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true + }, + "node-ipc": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-releases": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.8.tgz", + "integrity": "sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", + "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", + "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", + "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", + "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", + "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", + "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", + "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", + "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", + "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prettier": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "dev": true, + "optional": true + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress-webpack-plugin": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.12.tgz", + "integrity": "sha512-b0dMK6D7pFicDzSdh+sU0p/gp3n5QAGwjPbgacmYB/eVQpayzf9lKTQLYMnTAbk69fKoXSoVNl/+IkobJblL1A==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.1.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", + "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "requires": { + "node-forge": "^1.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "peer": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "requires": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "peer": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vue": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz", + "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==" + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-router": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.5.tgz", + "integrity": "sha512-BszkPvhl7I9h334GjckCh7sVFyjTPMMJFJ4Bsrem/Ik+B/9gt5tgrk8k4gGLO4ZpdvciVdg7O41gW4DisQWurg==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz", + "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "webpack": { + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + } + }, + "webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/main-Login/package.json b/main-Login/package.json new file mode 100644 index 0000000..481c600 --- /dev/null +++ b/main-Login/package.json @@ -0,0 +1,24 @@ +{ + "name": "simple-login-app", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build" + }, + "dependencies": { + "axios": "^1.6.8", + "vue": "^2.6.11", + "vue-router": "^3.1.5" + }, + "devDependencies": { + "@vue/cli-plugin-router": "^5.0.1", + "@vue/cli-service": "^5.0.1", + "cypress": "^9.5.1", + "vue-template-compiler": "^2.6.11" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/main-Login/public/favicon.ico b/main-Login/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/main-Login/public/index.html b/main-Login/public/index.html new file mode 100644 index 0000000..4123528 --- /dev/null +++ b/main-Login/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +

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 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg deleted file mode 100644 index bbddc0995b92840829a20800bd57568d94271eb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119572 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 z 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 IrLRB#*^!f@#sB~S diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg deleted file mode 100644 index 53fd996f7daf7af7fc5cc5e55c33b0defd8e537a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143224 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

KqzR3;~GrdVZ}mix*)eqYE#FxsfcAhmaJ;*+# zH2@cvis?O5R=*J{gMH6LK+4T(Rm!COdPBbK%6noAzj0|Gct3dGQ2!#EcFD%(^D56) zUDaI(5&29!xFiPQU46$^^+TX;bLDIaPjKKb0GVJKDjq|B@;{)?4W|-6R;N;jUvlVp ztq-x3^3KW-H2Txn`J+sO%#Dx!)@>*78({35Hfk~Ms`(Z9=&cVJcq%V1=dKjUgR&fl zAutauwW^|~IJa0f_~2cCi(pe+r3~6zM37NA zmAalGO`xqal8B$eJN%#X*cs1Q%ieIcl&^L%L(a0wJ;qN|xyy5wc-e~4Rr_N{RmWlm z3jKQX1hpsMh4%f()JoPx%_@=JyBLmTZ4zW$9#(e?fsr1HQ|Z{|cS+hyNy=wn;l>Jd zTzN!e<*l1_pk)c9N9Ly_#>&3pdX3r6HzxDgWse7;O#`R`POP)fVqyGM*j(+9pfva> zz9t@l$cD3aUTeH%2i!`f4&|zFK|7ya`({riTPWmtykJ#(4QQw%oj&C!Ov&mgiGF@& zD|;{}IbZ!S+xst%e1Ex}dR;J7(Pma>m9I8DLc}Y5T9VglV`a$#)O_tWO6W`<|2em9 zk$y@`r=mo!>1G$l=mjQp`|b4MvI-%>cZ6@jZ}FYmNNq?jw0=r(%tbO#3!-5y`601- z0R(R@0Oc^1&Ivb$l#=TUgDvceb$vsA*-Px-d?F8*gu!l#GCu4xyI;=i2lvZDvJ8n{ z?}g}=_bfj)e+R{kFvKz*ycG%tKA=>g=Eh-HW3@h@X88+;IO3WyF4}{D7Ht5(L2Zb> z)KpKD_{18p`fbg$mUwh2ifxo-ooNSIBl>DIg0l&M?l;zcYitIyfiuzaALhTo>y%I( zb?Q~7=qnl=S{ERQc);=RxF4_5F$UTWra{_JiWvWN;nT6mQ|n0G>L^tah7`6aS(jSv zaHi_GgK6*UkL#m;U600l17Es8XIi&xE;j1g5}^70f&_(65nLdDYhQwX#)q`)A+*nR ziMJa7D_jU^P`Rt95th*DjrMK+Iq_SwnX2cUq2m%#XM0W+KlmB9Jh{06GjFn-y?WZD zsW#Yb(qg*WCN!wS&SUxBgIrNtsNJKB1b=9PqWY&;`;#7eQ7Aw->XlZysn!;O!3?x- z?c3UhL^&^fI$PjQxYgWwH&-wT z;}>MKXbN&#;ly*?(fgVHb)u>p6}aMGlF$1AhO>u}@|{YZwVv05rY}45C>^c8BaQao zcw^T)gg7xAq!g3F&W#<8e}z4GC))RhJ&+ZI#UVGEA|02s8XthaEBaJ6F+5k}+B_6} zdP%K@`~6`NJS!BIgs?fKK5a>fyKar8wnxD};6+9D@mME&>n^;PGd?uxTpMv+$fz+t zc&}3aH*|M^ZTOdP>nP~~a@@(#{yJFww3u!*u7b%NgxlX30lBej(l|cgDz1S1WBB7{eHMnzgbtCZ_a0g<_plC;pspm`V}sst%#^ zVnLr~#NPgRaBu)17YGrih;8SfGAAZ@M9uH7VgoSi#R6*0v6;nNp3tRn+MJ6v2jobNEx0&JE81rANiozFUYS0)%+hag zDdF2B2T@O_HE@Xu1lu1t3BM*Z8NW50F5#e6aRpemeC>WytTW^z7ww|>04$O<#t`jP z{#@#EFY$0&WHVe)R{?&HWB`{p82z(l#$dAHCX~#9ZsBrU(r&x~-LbcVO1`DI_r>Me zuXK|_Fl;RsW+u+Dl`r9$4?JgoU{oXVhbuYevb`gGS08Ax+aGs7Za#erj##Eq!btZl zk%?P>T1f;-87IIC^WTj06uii(gp8I8)H^4ZMipenvi%DJ_dWFfuS(Xc#`V^J{8}yb zdB~IHA8$Tn%3Z1Q^JZW=wcDaYbvLcWJOipIn%FDkJvD)ekK4SRDc25t5nCYUHdyKP zOUHZi4DHg4$RwfU`kHL+Qdm*&%TzaYnbDIOJzTaZrTqCE?3w`n@=gy63;4+ff@v08 zDNfBKdh>QKePIPNr~rropLg!-vTXjGGupZTVmCu-D;Sj6x9ieN)23F$!8?_+^kFWR zSvZZoH_>+Ty%%(RCt$T~g(HI%Lo~JDk3Sm=IBa)<6H~J{gxwIfnnWAq7dgU6@XKyV z><^dV{XgewWEAtklO+Y%nTaFoFs<*CXIrddCFDE%RitT|<74^qwwl2bx;;YKu1iuy z-z2UvwMogD43!{~U74oX;+Y15-S!)nI^yT7-E3`$J_M5*0p=sV*3t4(1Jg{S2}3{* z0u7a%@5#@>hc4Hdgf9a#bm2Oawi0=6KK3Nlb1%vj06p$jcI_=q&wL7mbdS+CIyjU- zlh+L>NWFh}`vN5S)8(%53GXP1g`7lCLprA8H^wZU#z8FI8FitYf4ohzb$^}0YLGy} zJ=3;TMy0y}yh*f!VPZ+-2c_1J>^~nLDQ#A=&#|mKSz>EQKAv)K1U1|%nH|Ps(fvAv zb!5g6*ky*XqMOK=N>-%rRS=H^MTF@NgKMmWm_Ii3_%*Gi8Pa6q&Vd>SLqwe z^PYPCK;uq~S8*&qwIGMT7(XiY!*@}76_i{dk7#^mc)IrL@vt_+7S|Sd}XC`5A-#Htpti_7II1R3lx!~;j~@!Pp10`=R0)|%uke*%UN&zwXB5d z5b0dNwOHgEHC}Ceo~3W0ofcsE+f#6;Xu_I-cNk@pCJYX|KRBU!FC}WJ_G?lbJmb2@ zko=Cu>g=kv#}FU$x^kda2Kep$edfzXNa0nkvG2OVvA)5Kl^oN5KKrHH`81&C7SN_E zb1%O}uf-P-nP5lzbBn+%Lpk*Wq!j}>SKMqe$L-bmytGoSiu(#5Mbr_Lq(d z<8?>R{e%ih0l3oo%W zi@fcjX9|zWS8|96E|52_kMQ5U0`k3)NSo)}3{NjXBYD|`?PhQ8a7uQNFdxs_Tf zpDs3A_&p){8hJwqFm zbn|KDQQgy6a%8PJy3DU`AlI^7xN1cZ5*S}zD(9YtS!G@-&iz21oyZwUDd3g49$O-S|9Q8&eNa(h;v?m&ssFbJ=qS&reuwG*w{}vVou=Az z=DEU-reSmbpDfH6V-elt9Z~}NW^wme&G~MBJ3Zh;Yj8wd^VS5%&H?vQO>F(q&gsjoa*>m(H#4GIb5VyCn7FhvOfDmE(Bv5b!Y`y_KlxtKn;lHeYyPw<+d9TR7pJN&f*bNF z;o;c3&>3>qBq}RXXpFYAZ7>_emi!;T!iLsqq1_ zk107X*oSHa;jX_?e0SYAOf zj`&TOe8kxL6E929BUWWbAYG$dalf5TxV^pH>dc&+8e9e)#nyhsMpN4mM+8TFIJ?cn z*+uO}7<6*eGo3LN4nWoLQch%)cm5g zT;|CGr(pk^Bm-Mfm-A_KOVCc&@FYy~@c!mc+{&%ItL>*i7!%gUQh^#7pF62*tDjt6 zB!}&O+&OVQ&vX|+tZi}uA4U+@_rGsD+9M{-Zci+la=h{AjaMl1aTD^U;J$@bOsoj~Qu1G8_ta`b-_{EG4lm;XD*Lz0&Lh zWl3uMWAJiK4=zXm>nQcKT{-#{1k&grnNSB!e4!ARPD**{A=YiZDA6;D+mbh0D%Tw) zudUeE9{&E|_7tBAjmgt{s2MZ4nG&31^eXsq@O6lLY9%}ggoG}mYGgB>hLleXuXeS@ z1?~*7{MFZWv#kZ1!17EM+s1iCmUhy;J`*gZN~GH6 z${ruQj>Oh=TFXp5fxL_3?TuX^?fNQkm8BEgD)QzN1&5g5Z@$HsqNXh@OI#$O-bpjt z*0Lv5mS)on%x9WVP{C1clX9EOL%5^cPU56@jQn@2rtSPo%@xM;Ipxn9jec8?)^iq4 zzq)7w;l0Rug11*ti1#h-tahHDDr~!HHOZ*(Q}uReZ4!0Gg2Vg~`v`JUXS-7%WPF~5 z%z@EMp=(t=z^=*MxiH@`JhoQfw>dX%NIb%@Ei9CY^+ivjAUvE+>6Kpga=1tbX;INYQMQ>ZHf8aX0DB8vKB)zd(3A$U+Ge^_$W(=xfls%$kPk>cN z`l2hPaq63jueU66Cfvl$e6@7yw_ch!U7J9%Or!QsPKs1`BUH1gA3{s)_&2~kgA_PU zDCqJ2+vr*c!@b{mjcf7^+ps6Dut8IzJ!z%&6z0!4&NxeS39_EV6dR!q3Yc4Lvzy?V zYhh^S#}BzoTtyLxFrK6{woNxnM9;0bMH^G^0b@&J-Wl6uAJe?ja*> zQnEOZ0KC*%Mg^B8wVJ>z1f%inCK&g+A6V|RfONX4NMAyj9f6Ai*GXvs2t5DbOx)(? zEJ)3$I?etn?vDaDIXJJhb821K-ePC@nhf4om_hJ}`_rWX7Sgow9$f>2Fd+AypmAph zm#G)IM%!L9lHD1XM%>R!9A)We!H!(BK6jnLwh}2=c^ht{_3g0;+DzwG(92+}=7q5_ z4$*6H`u*`(F?38TzGkd(0RyOQi;*7=uOhBvJQ&!h=~GRc!Cbv z>XI928>*oVN#*?O`|+hVA&VZ?%QiNFbqWTNE}Q2qS@*f@VWG1h)xQ?2E}nyx4~$&O z94&yNul3dDpfbHFaoaDpAC||(+|eF=Xo1<0l3(xZ92t5HTTnB{Z^{3McsV0FQPpz8 z)rwb)hn-F~bk1DWI{U!p?o+>CD+6d^1>4_8J3q$SmE(4lPLLu03S|X%vb@L3)@{`` zZ=|p7z$e$!0!$^6|3|%5W2I_V#hTmbt|4}%0l&iGzq7{ePj6qn)QEqpkjgE?y9%MK zjZ5&=ntdssplFMdk&|y zv8newvnbl1=f-Qhi(b;v7J>M&4#!5S*ip~lW4}EkW#5H)o#3KUQQ$OuuKbjpy_!Q| zXiE~kIs8N)J{%I@<-a=!Svds+Q;R=~4M5b*_n`ypf$Q>@0ipI!=o0r&(nB3B*PgsI zkE=czjL;sguZ>A{ra#{VqacI5B2Fxdyxmpm<1OI<(a$I0^~w0s{4O!>+%kJ;d}X9Y z(nr_PPiZmK{ZZ39DKrwIWH`J$wMvj4S#D7)&Wo|R=QjQ?gGoiVp0NApq`%^4g%>7^qH_veRAe?E~#>VEMwc9U+h@pr%!)M+8v8?YYR4{egOAVWH-wM+U z=3P1wDi4bVnyj&#>T_SQ<*e=fTpJ-UAf(;G2#XRe-cvJvmD zgN~})5$DM1gPjCu`6nHXBsdszhx|j#)%zBWjamYp;9KB1yd8!DM zwR@TsVW%#s4wmBowMw=~$q4KV;p@m`IIE%Nvk1e_Rk4g%dc)<~`WuJ-#GeiI#Qtw9 zg-0s`NNP1CN(;R9UomQzvc@zym zj{RB97x%y0=f5_z%xHh3`zDm(=6t)*xGM;Gip~}!Jh0HJQ0WpoZ6G+6Et)l8Cph6# zm)_6e0?_)v+m7C@$M2Ye`X0A>+gwqB(>>pD>(KYS|6;#xYPSEU$2 zH+zgWenz^2)0t8~=hiH38R0eDwt4CmxqEdNVe?e42D5|OO zYcK78tIgx5v3@m9T7pAV(Fvr!|Ne)g`7)o(C-}R%^`C?_#A3kxDf4*Pq$rP=Cg1%C z3>R@alf4<%G0C?BRy)fxp8;#``=oPYx@_GTX_=-l94P)_`a`-u!+5Mp=IgrF>6p~Z z{&fLstL`ss_SF~C4v8CIzI>eSPcnUgQFi*gw0Vu_tdgL0@cPHI>ER3=;4RuHaYr^D z4toKr+Q9~6MLd}WP$hckYfdznDPaPv&8u37Pd4iYCPYejaZ=?K-mktF|6BiDzXKYfbm**&=IIA8gL{7ir@(#lxmpwYm*Na!9#gI-bMx!v zS4Z{kTl4-m);os|y?3-ozv`sMF^oOEJ9+f>oIaEFj)<5Oc~@8HS!s0QzIELRGkVYE{98U=v*77q2|2`VLv4_%nlb@8S^}j-ar{s9XsuM=?P+9u;`bTc&Y8f< zt&G3@v{t`a8!6yd{{~$+3T&NZY=$X(rR!J-n*VY2*viBEnB7;3}nEVW-znFXMx^*c()Y z9JD*SOfl@R_U~WdBJEFA-_V`7a{2WMd%<2F`6{e49dX_#-z|v{qm8RK*u78CgeN@K0^@Qt62U>cMlB z(H99Oj&L;N>-8BV`Qy);ZB%BnuZW%h|uP~=ee>Dh(XI_df(Kob*+b8@FyAe|A-?_wdoV* zYKDj>Rd==A&eEjKTpONg=G0DUjzjIiqYzcA&G7YlE===RF30AQ!;)wg85)-^OKy-$ zpRtYip2K#G+Kw7%{&hu?nep8o_Jh$r48Lf5Kew+#?0t z}vQyykCssCg@{ms;PpRz%X;7GA^A#W-`6HK+S<2VR@t$+bq35FM-$ z-{AlGFXX;I-#Oq<9<8t6&{F4z) zRl9t6rFCu3S~l9LuYbT@qi_Jw^e#`}ZoE*aL}p%(iIfw`vprIbW3r)P+cm2(5?*IqJ_fg3h06 zqqec|)|~I%IE#vf^K@vUmBs;KtUx$I{| zF6A?|M6;m^x(^f;`XGZ{<*>aG?3&4IQtys@Q1c=y^Wsvy?r!3bjSW?mh`t~=Vwc&N zL9uMsD{}s$y1;3YHDKm=&NdMn<}TOO(mkEWf5xpf1$INn_9z6y{*_1f;72*{rF7ah z+06AuVgusqu&k{DoXljgIROFRZuRgo5K3kzCF)4v?pXPulU5XjNrDYuAfKeHxIY9E zxI|l~mQ-3-ZL8_yG`pQ4N^_KTp46!rlxJsDE<8+)T9nJ9VT)fMkTL zDjK)=o61`pvi7`+WDPxl0aMl0tz~+FnoDcV>JFlpGtF!Jhk< zk!2 z;CI?n0(u_OYKcDo5p8--D^9~Qw8eb`B9PNF3!^ph$m9?4S$}{%$&X#$8ANN;d_Nr=yny^>FxdAL2HbT8aRAs8>!Re zK0{HkIVF*Le0QcT;ZxD!Ey-H6k$MX~ZVMy4pH|vJocDKR$zjZ~=QMXbmUyKh0_f{| z(;Gh=K7yv(3|TDf<+Oa!qIqR|BQMQ*PCo$hA6d3*g)$!5?%s_OS}k>({AgBHssu0( zl)AoJU+a-EtnX0{vYLvS!Rk6UC)~0dtOQ!L-i0%f=w2^M^OT@!I11u&Huuo@^(4LV z`lZRf`qHn@kOMRH1C7mR_#@=jR`i?T!`^ViLzhg5`E4? zO`M4oZO+dzi5Tz8e|O0H^UZ7XQtNX>*ZHujf%ZS@0?T3$R^^*1G(6Kv8R4<79KUEs zV$Vvz^@Sv-qo0#v^-c`t5t52TpF5l)h5?s>{a{Gpv&c^;B-Gk6K%9EZP58ibc{@LpKwi&)u%b z$H`A?4hFutKYvjalT*BPTXVgOoUm{|?)((CO|*2yG-gD!mUxj@@jm38RVp=~AePw~ zP0n>)88UQ}(nQGi)a4hUeGB!*+rzHOG!wsU$Bk;y(w!2>HAnFfu6yPdLp8jZ-8~O) zg@4T}0KJN6k)`OcFBkgp5G}l+!*1p4HDc?Jt7i=lk80_M*q8G&ap4T`ry%^V1HwZi z(T=hEo3cwSc9+89FYA?_qFU?k=U0w1H1!3o-vYsu2kc*d=-gLcq1Sd1Gauh+HvS_) zI!XSmm7qV1*x{+h+r>6onO#fG-!j=-jmTeDa#clN6CuRZ_0L~*C?%H=_M&D z?|d7jrx*u*A&cF5cCHxZ=km{IDr=39$^PkZ4Q{fSXXh!$BeTZNi@+o*rDZN-Y{#SJZC)r%*U6s*EvAMxGnJ?~Yf_rAk z`5KEKhX)Rb6XMa{mA53~s+5ZS2=1i37?-K+>Z8f)4aZT_9;g8kb z-Dk!-X_n<5tJJXzryHv5;gJg!50rZ*oN3~ehJggTm)_Jymme#K}wrx3@``z^C0y02u#W8=5BMy;B z^NscUA7!(p31FHMOHYo5#PujoU^;wm9v|43GE?aiT#ns&fluhv?}Us7qW>fO`i(u` z=#PHGbZ`n8z%#=g?&LSa0_V)1r}BnBZb9S!(#~_)IqDtE(06>4bdc)6EwbjHdhir;BN1H=exIpgI!h6tEni=KU6tLA((gWf!F8(~c!m_iFCcciGp5 zWDsW4Z$c-N7f{bSL@l8eRiF|6qrYx9=x!rVIj08;7CVzlbnSXFPl3$slw9Ob0mVVk zZTs>h=3Z^6%ez&6^uwU8zZ6lES4-|$VmP0VHV9sRo8SY7mA|u80v(kmg1cPaF_c`k zDi?brv$83CLN-!|1N6|IfoGayt@0DNtb#65qUrq_|8yG} zkGUmimCEQBBWkZi(k7^N)O~AbVe7OlP)b`?9Pu2V(+^hw8gr6zDenjN2`aPYP7({R zByzXOY>YhRU2kt_uVtRcN^~{%w}y27ta)JTo0ZTqE9!QEQiTdgFo_A8%3$78@8b!r zffN%c^FO%pEbH=;XFt|Q24hZQR%4vSrla?#Cw>l+cDHJZW7)M#KD}ehWpBnyuoW9w zaO}A8#`?X>5ptVC*7Uuj5BBI|IW*~nckYUW+`BMr$6m%>Ox33;P+Lm$g`AdgWQ$+T z+X%Dv(YTZ{Ej?mlo1PB(BH?Vz_1pD+oxixrZSKSsf8s6^RP??vM72*3*K$WG9d*}V zAV_IZ-)bA!9NpQpeWFB$gvT9hUtcs2Xy4JBd7ha&PpPK2i30FbAq-H~lTlaNQ(aH+ zHi{~=d%tzOi4Vi5wxz6eZ8kIPiMFZ~N zNI>Aoij>uk+(56{wjO>DjZqc06wwPofUr4`bBZLJy0(u0pthTi59cULse5Ej@7y6E?9Gt|0-sBaSv z{KNRhvf<}Tl03EgO(~Cnb|}u*Q_46|}@L*_}ZFOBUiMN3LH9uR7b&lg#*au$83rLM0+Cc>V;r zjiLF&Z<>8V_BqB_;c}`+GNw9;PpwZa>r`>F2ZAvew1T)Vrh4v~oWZGcUW*OYH*SuD za58Q-=e&hwzQEUFq#55Nz@Yx@8~c4|y%y5xn|A_*B~MrIwJw4x{G9DGOQcKIFGHKg z>hEK>LvY((Gh7tXkwwXPpIKtc*GDFjI*dt77lczNvvB0RxskPmHQggcEqys8;^2J< z;)|H6TVAi-a|bG-lVYD)U<#S6Q=sq$r(@CY4zAb{^xteLhI*%$qMfD+KY4Ykg9fR# z-%b!O2%A0@4qKq9bdp|bB;kOaoMr0+Q%AlSI>C=7x(H*WvXIoX~$6|M=A$;L|tr0ssE)pK5%i# zmdbIugoBJLbd$q z;r0F`lbFotIe$Z~@}9K+sMkB!Fq`KkxFV-I3# z9FK|aiR|L>8@I_L1mcfC;0?S%ODEGpr}Go%10dJ_l_2*_=mz z6U2%z*vPaS!LI>uA41;kuhHvNQ+Oj^M|%{r*#>u#>Gie959+&y#1?VUsgK6pT;mdHp}9$$^H+pT z|2Ut^b~lgVE!%ZXLU*%!jPThJe?I^{H%gk0UOHldxP8J*ZVgV|+tLqy>Jg~B7iLF( z0Men}l}xh%|MdG7p+!-koTb~tO2g~hy7JmSlgf1qd;%u=P@d z-%va|eVPgGhAi{%7!7xA_EQS4?e|muYPhX|>Gd?Ec}FF{7MYf1Tt>W}u$4Sl9LEDM1{{hBCbX9;z0m5n2sx}jPnHF*V+m&!N@SCs0FY5B?l+vH?>)}Eyu{w03SahyVxxQYXYwav!@Qh2Wn(FmgF-A6Cm?z;uHC|JEAmt! z16i=RI$n{>$O1x8B5CB6KC*HSMg?jNp|<&Jhxm2dYN4W{QR7qB>&vYEUvJo8q*v`U1~`p>Dd__hLxj-zYaw-6VP{>ot|B_j=^g$P0oxg)Uy1Oa#Ebf zBt4|^!_~I%hbK!o+lsPvNcIiyO;1SE`QX!+?hA)4GEcCF^l^4cCG0PO%CVY|#n>Y>LZ(rQlbNhxn5DfCjao)_p`KJk1ah@=;b9^QLo$_Ur<98M3(yf-=!>| z-;TELFnSP~PVsvo`d=J-i-+u1xWBLU4P2Og=jQ|bWe(Bp3BnimfH91qRqUe|DQBgB z>P=R!Jpt^Fna0BCY67v!`TwV|Zx3g>|Nk$kCds6zFrld1VM!>4oKiW}?Jnm-ltYG` zH@2Y&4Xe9@^Ol_IPR^0@+2k~g$k;HBQ{O}) z&+@I|Ng0=}Mwd0A$0us}IK1Wz-h>gWq5R^n>V8-O34F+vTVSX@W_~gusWtL1;?yY` zq(*+T!FXwpH^{}SaX$C*uWbx&)LLegTAhW^Iwv6P1u3Uy+v_SaLB+L7+oEpv(~1+| z#SP-V_VY*mDkLF+N3Y}Ry=_y@71zUcy0nHiEYLHLeb&xK2CL{WKhL0dUCnGqh02}Y zJDLwS{)qab^QMFGIe75@-Es7Vw+-yzfZ!=h>}umIf2Qf3qDI2eM#ag8kz=k4RbSYL z_&y0{D73zKj?DtQ?36p6dD;%4@VGpXa`7V6!FMYFDjNdSw#a}Wc2tn zN0+f?2l__*wgoIbUSNsT!f&f)t7o5oJTB=+lNPbQTZq z=dGgO4YO5`Y1+3(zP=S!a0Kl$b}zDkT5=`b1n#IVG4t2*^!;~bdzYL5+Kcl;>rXx? zS$%1-)3p5x-Ok%RMp0n6)j^ZwJ`w-n4sGEDP4AS`Lh5c=erfu?UTN}YFEx2pT=#V; zj=m#uHtnk@%k*WTjOW@%1^#28Rank}6%WWYpu4X6S^L`2^XJU3pf6fFj|yWayZ9>( zObBQnh(6?L^{#?`rLq_-Mveh$@P?5l_iyHqp7D25SbYAp%IL$tCW9cAx_SNBw53&> zi*DA0?dc})yIDn-@_Hw^ua9+pSl8`PtLc#+=8E{+&d2pEzJo`G)wV?qsDxh-?wVQ!_T|l7+Dmltb~$as`iqXS zAa%cuZ8wju^=WE&&80byo(8eoq$UL$iXEN!wHfn6C95Y(x;bl&is`Nri>{8$C69zn z(*vMOBSnWcCXJAZ3qQ*5XRALe%vI&a`*%fxwn;n(oT-vb|wRV<@B19x%9%dHfO$WzqjJ0y1b49zByW5 z`Q0f3m%E(l6?*bkNFft_;rh+9H})SqcyDO4@-Nrpe9?!lSOQezKBfHS!!-!6+HKlo z?oO;Mu6R?xbyMwSp-bHmlZ!9^(2D(QCA5fH07*R^c<6AZX2{Cc`V68v1w*TJhg#W2 zNATN?u2TQRw~DDO_^aOCQ4=7mRMfzb52G~L!Qy3=`Jo|Ph@P-^C8mDV)zUVDUA22X z&Ozf>sFtghWUyLYSj325xf~I{{ASBsQTS7lDHwb zU%LEqs+s)j?+-7hF1n!hM!Ly(i^PHzVEJ-d(A0hbsY!-%kfdh9UMi20g5bxMwe=omh}(6&l*wjuc_X<>jzh z3wvaZx8XlX1PNRaVW2ME9XHy(&F}L9F;25kKGTjo3=U!y;MH`V-SPVXaoR90@Q@qf zqm5@Ef(ROjI*#vm{>>taO6nYnx%?u2NxZ_HI9Ha6K)h7Z#i@hYMW_r*@ya}6Y6feJ zdJAnYtxAhv5Di6{MY91TlJCqPiOeGP8^w=}w7%=pk?F2Jy9Ap%U1-eBZeYSB&qcdm zyJ5fXA^J+Zh_*S|ujA_{`o!0Zu@wjcF=v+>+(=U#i)HeBSP|Q%E^baGC45e1KA8(B)>}$znhfIgwGYE?-fT9uURjKj}O0JMrS3@ z3ETY-O3Xs~+pGmE^uPGKGD%r5K~I~058jszw3^a_CwBIM62N$l4qPkqp&n76Kq8He! zjNF=~_qKRnPeSGE_hiM<`cq-?d+*==QlWoo(qW(D3y*luKfD*8-H8}C;sCYBv+FM+ zo{RfOgZv@pqLzy=6>ezI_p9BSa=#?zgzjX|GI}8qgTu(5)M3@r(H6~@K>!nl!bkwslZ6Vb}?dv zVop1Yy@)hVxTd!Y8<>@0G;@`MFf_0?f_3{Jbcx3%y(9#tHoEdnT3YC)bLtQtnV_b1?rxy zg3gFXkr!kvo1zDPck&fS?}H6emy;%5Jkd4q%p5AY-5v4(N9gZ$->tuUQ4rYL&O5T- z5`BAetWh{P&kBs|9ag7aIAZHJRH}jRwL>cXn!U+9ET4`7Z^8mOen)=n{?+v zqaU7K>UEi^qm0Ko3vWd9)sjOOmvO6%9jHpHWY8K3FOIz zFeT&6-w&kLsFs}RKjRm=o&qET=d%+G0L;7cGJds%89&ym?!0h8LLYV4&VQ1F&L-w*Ka>E>~H^| zU)aU5TS%1KZ6elL)iOsY4%r~gFpj89Q@!9shwg>B3Ki`L*t@t`ISAKGc^SMnk#v`t zSbF_E2qK-1-1j(bS)DX& zHyb-jpx-_^W8(8B|8MHlF|ZeD)D3T*Gxj9LrRy0WM`Pye6*Lcogb zPoE67_bUihWKrMeSNui<0n5mS6&P;y_5B z@2s+R;p^S-`?XoB)#~1XUgrpcVy0Teh`+kWBRzW!k_c2E25B@1$h?}MzJ2CNd6nHP z^q=WxTogXW|2WA+PqH#`8tv9C=1&Iz7d1re*td`@n;N zUT0J1Ztly)+DA^S3V?ftfK(>Jq2_fGZR6(#1sPG|M- zW}Lcs4o{Ck^+uR3lKogCla$sutiUs6fwQVUlL6S`iv{6*R(W4BG0_RJYxD{bma8j0 z87o$3%gGud&9}CXkKwedq^a^da=pY#nWWF51&PzDS#MOc3qKwJbI%(bG7&P1em`}-QriK!$-Y}+X%ntN8;bvV<#F6&k3uRA15rUfx0u~5~@c|d3|5xg?K+{ z0R`Patp)-!Ay>^(o;b&&Lgp6gOvRd-DEnpsy`~;;r?Vm;z-i%#jF>97wY@G#@|E;m zNQ7=?mo^t6&y$|61^7M8BK#g~NfR?<+FUPifLm!;O<8uNu)%=}yrF~Vlo zzbvJc*3hdbZmJ~5fLuzx({!Hh>JNQY`z5bva5-gn#d!e7-Jz|kEBr6NKit+t*{?}t zQw-`*!yOMV|8&MMsob=vtb5VEhcO}1?!w&TvU5J#p;5K|PDv_1M7yN+6OGMvYdRJ{ zR561?S?bOvbNsb)mOip+mT8T>*Mf;yAR%gtA@55Ih@^xVLrs1iht$YSz3dOt z-y;cso+sgc4ESA+V^~wZ63q%5J|wnIssy1i(i2L0uV- zJ+7wZUA5CsL$n4$qD{n$9N%bUq3F*A3gWh(DFW7bQ@CuSGw>k2Oj6iO3q9 zetEp{K7NNzqb(1&A+U4rJsF>RctcwKZt**ex7f<;R2TaSXDO=flZSre!WCi8vTHT^ zt^b(d^u;M3mCDWOUe;~y{5HOej652w(X3PTeMIef+|Ng%14pSXYA*WEiZ4pqzPZ{f zU#%E@=ev*R$uZW=Hznv&0~lT~vj<_R=T3>d=^}~#p5eXR?y5j>oz)^QVXlHo7DR5w zYhp$u9^7ay)14SI;tbKJ+7kNaKx1DImkF|90J#ron#e*y5i!dhQHkgp8I4^X(b+mF z(4Top=@EDhHytMIHxX;>%d;N1UK@Z!uSumlkxe_T-J9F*Q8vFZ`|vzRcqTw3)QcqJ zZH?~Jsg((SzN$Us?~=xH6N--#(wGgPYB(D{+nl zn-z~VtM}H3i-a7Quf%j^Ninu%UsNhKOOCJ8UgD@7at76AKbzzAJow?WiRg8a``Zn6zjGATlCYIEif!JHIUDV?e^??|U-^y<|7^bGVAYTB?92^2Bc z*%11mH1qtrMEW<`cB}hwC6S)q!L!>+{AUNL>O$EB+ERyWRIc+4-W4^nzL#plhQ;=E z&_En*pH6mQZQ;c(W6oKlF`ym2Jm0q+N{fjc7bpQRRW)K2ALwEvaLZ}oS+O1whjSf! zs%>t1zH=6xca3WDddD)R?`(Q3&8MS}%U9EA*6~Xf#h2W%Yf9gW*+t;ZHy*EvCR$1U zPPB$caNsn!Hlyt24GO}htoVk4wE6Vq7ZaAdRp!yVr|o)%?Y1kO)7*Z?Pzkw@-K=uJ zxb0s+)SKu^e0#HgZf^^(m&@f8=^gpE$XW|0exZ=Fe2bEZ8V1O;I;-sNHMln(TvZjt zi?qv;AyfI`T9i_6m_h7S0_{~|e8yoBNs*t#dmrXq<8}bwRn}x@16y16F7Pp$%@y^U zE59|GY6CawYV8VwONJLO;1M9c;IAVt=p&U3ooJLe8rk1;a7N=*!0Hua`)F_RcyIj- z0@-5`?DqS(x8f@CQoC5$c>A-xnvX&WP2%zc+crjZ*GYD5k6I^uo<8vkmuoOgr6=rM zYbz@#rXkfZReE}BKn;{sinbgtOij%vR*bkB)ah7blUd(!MJ)8?5tprQ;wPTxyNk4Eg##1D(6puX)yFN-b`qZ?mlry!9tq4;u3e zSkXXNaO-M(1?9}HQG<6ha0;A^+H+O|@`XmH>0dW?F>yFQb{p0&dgQSG3Gl2atX%F# zS}|HYSb5>kkhrV!trD90n*0`c>aJc>uUB3`@8n2Z9=4*`Pk{g zZQgZf#KqfvAiOhgudwf1$??@>e<@H&W43NF#(*>v&^RwIcX zPFdDzH+(O)?%Wy)^wnK__8XTmu-SI@Uz+#tzd337LHmxBuQfbxb2sQQk;>b#k>I)D z-|zTMQ)E2aK|GS47V==+cnU~XPRtB_(V~KVK4Oc;#&xV@t~OWFf@Q`!)g2;3^sB`_ z)R|`vJD3%=EoL4Z+65HmB%;2~B@=hha2T3M|=IOPkV9MPE*{P|#FBP@?cl+LwGLlp`h&^6dt2#G>|A zL3s^qA9?9(4Lo0*MoSdN&TslJO3@SMO*Q>jtq7cCQ;xg{XOYa1i;i#_Vw?E5ddFQR z69sv7L&IigQaLicJvIOJ{8HI`&^$gSh`sFETj>eE8erimVKBBcTe&FTO*QAHQ>t%9 zFvkO`GZ;vAT0O-0A>5&I%iUPVWCtWXVBAoB6ZEL_%H`tDC|s zW7m*9(W}7eOgl;8yJNj_mVgyfbW^~W<1MDu?eNN%&Z1Kng2QSKh^{2wq|O7n+|YnA z#hI70Yp#QanK)O?c|=o|+ugIC0D9)|LXb&vQNE}IRo+O>q2;HCmHczL&T!AvpNJs( z?jN%bdkJST*4i1Q^)o_=9&ZPoV_ui!Aay$Iwd{eXz<`d|}tFJgZDf zWl)oH^pt~sko(+Hnq+9V@Z0xf%`us#-#u*az>ojQA!>XXERfEaO< zZ2Pi!p>Tm)S026*LJqH{xu6icPFhUZK;tveD#r?g{@B25G(uj@EHVc1GL{R}GHP?( zT@C6N4fy#l@C6Dp3~;Y3W}l^$@W70wsr>u&O73TN&}17_3%6Le=Bknz{*I`V-aAYi z7-DtJ@1Rr1zy@Pxw$;2?!+cO-6Jk&+$oSk|*$^BB0*8z7DUD;$vx%5H5tB2|Ai7lf zLD3_4?9XF_*@-xKe~$8a5xN3==-(FaUsPqpJ#{In20#M*0ML0*Vj<2u1%jiW)TW4Z zifkBuTm|AoWn5%`f8Cp;%nChWQ1$$(gwsxWY&G2zyj)hn-(Mv0>B#o)ryPPU>2h6F z(n2y6%}>nBBvM~1F(^r&iV~UDE<6cL!RSd^daNZ;(){}~`wWE@%rc}M+=(`$DYk#< zkm99QAH;Xoxx}Pw)XOL~Yq{3PZ@>n`vvm2{dDs0|N5yBT8Krv6F?`(CdVYf^5~r}t{RGyT9u_yvrP>cTP^W1PeF>My z0{C?CXg4g#=# zn6&OL0~ccV4h`8K{K0itt=PQle38#+iDRV0>^Dy927k@w%G^PdoHdOBUI3)n41K|A(y&HZW1ZpN9KxtO;eM5i*+t-E|=o zI+n{w^7-E@1@aHe=KZeA2Ul($=7Wc7iLWePc~z(#krzig3B`7*hkuUTQ}1G3HamA% zBLAjgCfif+OwZ;Z{Iq5>KpDPa(^v~ajhD?!D~BbL=JP=;$;^#^3U@I0BgJLHl%x5A`6!3!@Fi@ zdf>o?cx%0H0cGXdZh`Z5XPjz$KwGe3lEFUuD$b0gPPxRYR|c$wMAlt=smGYzpB1c9 zpVsA5n@n>73CA$lV%qSW>vm@mL`FT?jYmht!P8c#oEx zBcnFGH^8$JJ_9~}JO8vr9)S7Q1;l)ku-DFKY}!y6-;PZ#Z4TEHJJ2myf1D-}JR34Z z9W8LvW(K}c_4lVNW;?GupiCM|Pa#Aa6Q|A#$8A8(1jRJD?1GrDGD28}{2npZK?5!1 zAh*#ouh2@uDblBD%1|NyCEn-OYB-IKol1w?2P{Xooc_+<6?!J%oeX|BU12wZU59!$ z4B;gNL}w@U);%Gt^wRpzozQm_`nC5`C9&7XxF>3EFB07B^|Jn|T;zD<{D%erq1rK= zqq43dCmi=3n=BbyeJ>X0ty-l#zW=U3#vt)y&FGVgSDV>JVe2*TeaLf?=2uw+&|zG- zF~11}<9*10Q{)$??HTM$d_{FWs`8HCq)(h1 zw-{)kljXf;Q~6RIJ!?#8FM;9ZT1D|>BTnf@-bN3XB)m>DgimJ*@&FnKwmc<4kra>8 zBWQ-3M$ymh2rYLn_Y&SRva9Mu3h|?M3;XN`J6NCVAKpaA>ZQ}M@Blqt67lU`GJUJ+ zDJ*nPit^^;CvM%9`P-~OQg9?MMe=`iUxtI<_aQ&N+W3Oc$&>a)>hTEN?a+Nt(W{Op zm=&Rv?GwQ@hQOlMtxh=|-EE|)RXo#wmlzygwerQ__A@zkyEDl0C*e=*5?eb zg!<3^#`P9>3gl29RCq@^c96H@1lf2EN*I5(EV!tUHtf3B>a*(uNWJNzBV-5 z$rY6iwsmP#3+MU>i>N<|(vA*e{UzKl*;#k{rk`Tjt<(0Rd5%{?x5kVwR;p-^4&GnE zU)X)Gq*x=iK##<{)I6CX4$<8;640k&H$n0=i(XU6Ho!2D7Z8e=FcM>>DdDgXQ#H#F6vZa?_Z2r0T*_0HDSkH6Pj9~X0MAiUba-A&}# zhOXurYRB$xiQtW`9ls{5z2IiXLJ%2aRzIxIDub3UCtv@M?}~<fYuKxA#!V&16V*vV||1W$x|_=A|{2^FK@9U-!R=E1O(GXw|4^6312j$6A9R zV}Ysn9KyX1JgsyVMnG$}7oYA__+N0Fm#tDYv>xd;fIYDQQ++zb@=s^N$8leWg7rf)-w?to4_7%`fXJx8n8w@UGQ z(H(_mRucO-nOAn!e6`rH%bDSOXEP(NrS~?#TvX@4qO-H=Q?-7VyHbQoKlY!mwr^m3 z1va`J{p}T`vI&1~{Ye4CdUy$S8h?A|Mh*dPDlO86lw7REqQa$XKH<-`w{@-7k{t#= zPMXJTLD?S&UG=bin}_z#-1s@e{v*)E9=FYFf%sb-^vx#j&WOs??!dKDqwaN!2O*Y9 z&m((Jef#!86COv*$C~9533=%Jt-7EUwpsN$C@M@P6BVW>^hIvq@^j;dUs@mL7b-@m z1P@MHo_Sd@{UyFOJf`#`I;3jEL14i6LWq8qgW}U5?Tx6`%nC&*$Owgh(^qn z79Ysf6qFyqeWxDhL&9caZ;p?mBt*sYuHAQ9ydMf+ny0aKij|V^EeQuG!gYnTj?X8r{Yp7PnUxnadzq2+G%Oh9w3p%X7>PgT0rCLAxyqEVppA}ZO z>gd+qfKTYj0&z*uzdIKDF}aRL%{~V6U`bIFx`Q0jkY2GTb4o5ntmLG~+mt21AYR%$ zM>PF4@6bDq!fO|=CDo^xit}1pcp-;a6Y4VUbf8StR~^(B@_~tc^S}UV7?1Ox!p2YJ zi@X=?qF2Ew#OO;p9ao`dIYff{?T_i_NmoKP+G-OIQXfu2-vv^#l@_{#hnpG4-fYT1 zrPZ6NFFsk_2M11luF#f$lYY~QbA4Be4eVU3ABrAH@^ms{-E$6lU)W*kBtBi0EMxvU zqrNbdrYq@K^(yI0Qf`(yW?S!@U3*bYk46#FHyj|-@Ixy?IPyQ-?I-%Bhxr2fWG{iv zp8zTipN32U+G4E%O*U zg%|}!k~^ekLI25DU0S%zw4qv0)2ptpVZd(htUYu<0YCG3pOn{8{v`;gA|47lzzLZg zLR51es5`Q2c!D~w6Rx<-skrK z;rp{$5VZDn!eS)trai}!lAW2_@{**L!g!VZ@@C5-T#13eRPjb9R|6FwEH~&GAC(cv n{0FL?DYowKIU;c`csIfldPl(d&#yiEc)wf57Dj~zE>Hgpz+LYb diff --git a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/favicon.png b/vue-light-bootstrap-dashboard-master/public/favicon.png deleted file mode 100644 index 7d8b7d072215eadc900d6e9e74e51971ea9895e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2761 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 diff --git a/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier deleted file mode 100644 index ff497d6..0000000 --- a/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\Playdata\Downloads\vue-light-bootstrap-dashboard-master.zip diff --git a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png deleted file mode 100644 index ca9fa88471a83781acf0c00784d5b4bad2ca487b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2864 zcmW-j2UL^E7RNsVNa(R3EDs{E;vy)kf(p{hO4(f=^5CI7P!!!&Tv3qfDgp^z2@rZq zA=E&qp(H_qpaDce&U0gv&KxlE3GC={^K0?*Bfdpn@U|u&5K@?D0DU-N}QX`)LrgH2^{A zEeMK=g`i!q@x&bn+ILhLdBhEZq#^g;Jb(H0X|bpnmtRm+SX44SJ(HJTI5sxEwzl@_ z)xh)T-5Hr#TU%Qdl~r8sI}T@Pcng&CS%> zT1rbxYfUYsth}<8Qb(z)r+`u4(A3miS65$G-_Y3D)X>maN-8fUm6hNKRaNBb>YCyb zd__f7O-(Jaw5*`8xUH?7SV|(5RpjOsRDzR{Yw!djgTWvWOUuhE@r2Tb#wJh+)M{*M z!r_THJfWFNrP1iEt!?$7dQ)>-TU&NcUQTX)3s`Dz@95~r&dtxt$)nL|*zDY_?A-Qt zS_uwMqk~`+6cuB$z}~`~yn@WE90sE!6PuHP%}&qAO3%R7)YiQl8JV1%tgCD2c-F~e zc76Exv8jnVH#axGupkzTOG@zHzI}^{iHVJkjf;yzp-^ZvIzB!=At50#F)=AADLFYg zB_$;_HTB7pCr_U~O-oC|U@+zyKlx9zfymR|iM|nSX=^_hNQ+bv*}O>F)07>3Q)2DEyMeV)gd+ z_VxAk_xHa7P8t|^{rWZV1Dnkr0-gX)8V2IOc?)a-jP(w18W{yHdH?{B%5D4by0mTKOQ1}TrcyUoA5-lw)0jkT(%PT7@ zpFe+IU0nq>USD6ANF*B@8(+SB+1%U&X5QZ3-r3pN-QE5A^()|imifzG2$HLIakTS{ zZ>g;1cShYneyY;rmD| zR)yt|qtlYfbpLSAY+%t=sK3{-q&v8`Nvgr>kx$6!$Qyph@r^1)f?Kxp$QhL9P zR`8nA{$Zju#&>M5lAirvSyu!je%i7qJ9W(-1umC!;e>`#0!Js^PZo96G)cCR>~E$O zu4m^@S4ecw)pAyBA>V^5!p6M}dJ=s!5X%(%JyWb0GXh;3VW|uA{f2jTZtB%6^tx-}ODGdcb-AGb1hdzaQC%zwUgQWyTV-#oUlvO%Iq#<#)s4Igu!V<$T+

- + @@ -267,4 +267,12 @@ export default { margin-bottom: 20px; } } + +.thead-sticky th { + position: sticky; + top: 0; + background-color: #f8f9fa; + border-bottom: 2px solid #dee2e6; + z-index: 1; +} From 3777dc869f86cf1ecf0b306d95152f5deed17430 Mon Sep 17 00:00:00 2001 From: qkralsgml78 Date: Thu, 11 Apr 2024 19:56:28 +0900 Subject: [PATCH 081/101] =?UTF-8?q?[Feat]=20=EB=B6=80=EA=B0=80=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/BAdjustment.vue | 38 +++++-- .../src/pages/BCustomerList.vue | 17 ++- .../src/pages/CAdjustment.vue | 38 ++++++- .../src/pages/CustomerDetail.vue | 5 +- .../src/pages/Delivery.vue | 103 ++++++++---------- .../src/pages/Maps.vue | 10 +- 6 files changed, 138 insertions(+), 73 deletions(-) diff --git a/vue-light-bootstrap-dashboard-master/src/pages/BAdjustment.vue b/vue-light-bootstrap-dashboard-master/src/pages/BAdjustment.vue index 72dde8d..6c54c7c 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/BAdjustment.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/BAdjustment.vue @@ -67,8 +67,8 @@ export default { return { selectedStatus: '', // 선택된 정산 상태 statuses: ['정산 요청', '미정산', '정산 완료'], // 정산 상태 카테고리 - startDate: '', // 시작일 - endDate: '', // 종료일 + startDate: new Date(new Date().getFullYear(), new Date().getMonth(), 2).toISOString().substr(0, 10), // 시작일 - 현재 달의 첫 번째 날짜로 설정 + endDate: new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1).toISOString().substr(0, 10), // 종료일 - 현재 달의 마지막 날짜로 설정 Cadjustments: { columns: ['주문번호', '주문일자', '금액', '정산상태', '배송일자'], // 테이블 컬럼 data: [], // 전체 데이터 @@ -129,16 +129,39 @@ export default { }, resetFilter() { this.selectedStatus = ''; // 선택된 정산 상태 초기화 - this.startDate = ''; // 시작일 초기화 - this.endDate = ''; // 종료일 초기화 + this.startDate = new Date(new Date().getFullYear(), new Date().getMonth(), 2).toISOString().substr(0, 10); // 시작일 - 현재 달의 첫 번째 날짜로 설정 + this.endDate = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1).toISOString().substr(0, 10); // 종료일 - 현재 달의 마지막 날짜로 설정 this.filterByDate(); // 필터 초기화 }, showAdjustButton() { return this.filteredData.some(order => order.정산상태 === '미정산'); }, adjustmentAction() { - const adjustedOrders = this.filteredData.filter(order => order.selected && order.정산상태 === '정산 요청'); - const promises = adjustedOrders.map(order => { + const selectedOrders = this.filteredData.filter(order => order.selected); + const invalidCompletedOrders = selectedOrders.filter(order => order.정산상태 === '정산 완료'); + const invalidUnadjustedOrders = selectedOrders.filter(order => order.정산상태 !== '미정산'); + const invalidcancelOrders = selectedOrders.filter(order => order.정산상태 === '주문 취소'); + + if (invalidCompletedOrders.length > 0) { + alert('정산 완료건이 선택되어 있습니다.\n정산 요청건만 선택해주세요.'); + return; + } + + if (invalidUnadjustedOrders.length > 0) { + alert('미정산건이 선택되어 있습니다. 정산 요청건만 선택해주세요.'); + return; + } + + if(invalidcancelOrders.length > 0){ + alert('주문취소건이 선택되어 있습니다. \n미정산건만 선택해주세요.'); + return; + } + + else{ + alert('정산이 완료되었습니다.') + } + + const promises = selectedOrders.map(order => { order.정산상태 = '정산 완료'; // API를 통해 서버에 상태 업데이트 요청을 보냅니다. return axios.put(`http://localhost:8080/api/orders/adjustment/${order.주문번호}`, { adjustmentStatus: '정산 완료' }); @@ -155,6 +178,7 @@ export default { console.error('정산 처리 중 오류 발생: ', error); }); }, + getTotalUnadjustedAmount() { return this.filteredData.filter(order => order.정산상태 === '미정산').reduce((total, order) => total + order.금액, 0); }, @@ -188,7 +212,7 @@ export default { } } } - +ㅂ \ No newline at end of file From a1b676d037e6b8851eca2e51253c352e687f8d16 Mon Sep 17 00:00:00 2001 From: ae-chae Date: Fri, 12 Apr 2024 17:54:42 +0900 Subject: [PATCH 082/101] [Add] --- .../src/pages/Overview1.vue | 315 ++++++++++++------ 1 file changed, 215 insertions(+), 100 deletions(-) diff --git a/vue-light-bootstrap-dashboard-master/src/pages/Overview1.vue b/vue-light-bootstrap-dashboard-master/src/pages/Overview1.vue index 0688681..18dfef6 100644 --- a/vue-light-bootstrap-dashboard-master/src/pages/Overview1.vue +++ b/vue-light-bootstrap-dashboard-master/src/pages/Overview1.vue @@ -15,7 +15,7 @@

{{ weeklySales }} 원

- for a week + for a week
@@ -30,12 +30,12 @@

{{ weeklyReadyOrders }} 건

- Updated now -
+ Updated now + - +
@@ -71,60 +71,63 @@
-
- + +
-
- +
+ - - +
+ +
- + +
상품 이름 상품 코드

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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-2.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bbddc0995b92840829a20800bd57568d94271eb7 GIT binary patch literal 119572 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 z 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 IrLRB#*^!f@#sB~S literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/img/sidebar-3.jpg:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg b/vue-light-bootstrap-dashboard-master/public/img/sidebar-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53fd996f7daf7af7fc5cc5e55c33b0defd8e537a GIT binary patch literal 143224 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

KqzR3;~GrdVZ}mix*)eqYE#FxsfcAhmaJ;*+# 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/Dashboard.PNG:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/favicon.png b/vue-light-bootstrap-dashboard-master/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8b7d072215eadc900d6e9e74e51971ea9895e7 GIT binary patch literal 2761 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 literal 0 HcmV?d00001 diff --git a/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier b/vue-light-bootstrap-dashboard-master/public/favicon.png:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png b/vue-light-bootstrap-dashboard-master/public/img/default-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9fa88471a83781acf0c00784d5b4bad2ca487b GIT binary patch literal 2864 zcmW-j2UL^E7RNsVNa(R3EDs{E;vy)kf(p{hO4(f=^5CI7P!!!&Tv3qfDgp^z2@rZq zA=E&qp(H_qpaDce&U0gv&KxlE3GC={^K0?*Bfdpn@U|u&5K@?D0DU-N}QX`)LrgH2^{A zEeMK=g`i!q@x&bn+ILhLdBhEZq#^g;Jb(H0X|bpnmtRm+SX44SJ(HJTI5sxEwzl@_ z)xh)T-5Hr#TU%Qdl~r8sI}T@Pcng&CS%> zT1rbxYfUYsth}<8Qb(z)r+`u4(A3miS65$G-_Y3D)X>maN-8fUm6hNKRaNBb>YCyb zd__f7O-(Jaw5*`8xUH?7SV|(5RpjOsRDzR{Yw!djgTWvWOUuhE@r2Tb#wJh+)M{*M z!r_THJfWFNrP1iEt!?$7dQ)>-TU&NcUQTX)3s`Dz@95~r&dtxt$)nL|*zDY_?A-Qt zS_uwMqk~`+6cuB$z}~`~yn@WE90sE!6PuHP%}&qAO3%R7)YiQl8JV1%tgCD2c-F~e zc76Exv8jnVH#axGupkzTOG@zHzI}^{iHVJkjf;yzp-^ZvIzB!=At50#F)=AADLFYg zB_$;_HTB7pCr_U~O-oC|U@+zyKlx9zfymR|iM|nSX=^_hNQ+bv*}O>F)07>3Q)2DEyMeV)gd+ z_VxAk_xHa7P8t|^{rWZV1Dnkr0-gX)8V2IOc?)a-jP(w18W{yHdH?{B%5D4by0mTKOQ1}TrcyUoA5-lw)0jkT(%PT7@ zpFe+IU0nq>USD6ANF*B@8(+SB+1%U&X5QZ3-r3pN-QE5A^()|imifzG2$HLIakTS{ zZ>g;1cShYneyY;rmD| zR)yt|qtlYfbpLSAY+%t=sK3{-q&v8`Nvgr>kx$6!$Qyph@r^1)f?Kxp$QhL9P zR`8nA{$Zju#&>M5lAirvSyu!je%i7qJ9W(-1umC!;e>`#0!Js^PZo96G)cCR>~E$O zu4m^@S4ecw)pAyBA>V^5!p6M}dJ=s!5X%(%JyWb0GXh;3VW|uA{f2jTZtB%6^tx-}ODGdcb-AGb1hdzaQC%zwUgQWyTV-#oUlvO%Iq#<#)s4Igu!V<$T+